log/TEST.md

1.6 KiB

日志性能测试报告

测试环境

  • 操作系统: darwin
  • 架构: amd64
  • CPU: Intel(R) Core(TM) i9-9980HK CPU @ 2.40GHz

基准测试结果 (v1.1.6)

测试用例 迭代次数 耗时 (ns/op) 内存分配 (B/op) 分配次数 (allocs/op)
BenchmarkLogger_RequestLog_Realistic 550,500 2,056 292 5
BenchmarkLoggerInfo 135,568 8,446 - -
BenchmarkLoggerAsyncConcurrent 142,126 7,445 - -

版本对比评估

版本 机制 存储格式 可视化 性能 (Async)
v1.0.3 Map 序列化 JSON Object 内置 ~8,773 ns/op
v1.1.4 Meta-Driven Array JSON Array 独立工具/Meta ~7,080 ns/op
v1.1.6 BaseLog Pointer Opt JSON Array 独立工具/Meta ~7,445 ns/op

总结

  • 性能质变: v1.1.6 通过 BaseLog 指针直接传递 优化,减少了接口调用的摩擦。虽然在并发波动中 Async 表现相近,但在核心序列化路径 BenchmarkLogger_RequestLog_Realistic 中耗时进一步从 2,122ns 降至 2,056ns
  • 存储优化: 采用数组格式彻底消除了日志中重复 Key 的存储开销,极大地降低了磁盘占用与 ES 索引压力。
  • 架构解耦: 核心包不再感知具体的字段名称,通过外置的 .log.meta.json 实现极致的灵活扩展。
  • 内存效率: 通过零装箱 (No-Boxing) 直接字符串拼接技术,保持了极低的内存分配。
  • 独立工具: 配合 logv CLI 工具,实现了“落盘高性能数组,查看友好彩色文本”的完美闭环。