2026-05-04 09:57:29 +08:00
|
|
|
|
# 日志性能测试报告
|
2026-05-04 01:14:46 +08:00
|
|
|
|
|
2026-05-04 09:57:29 +08:00
|
|
|
|
## 测试环境
|
|
|
|
|
|
- 操作系统: darwin
|
|
|
|
|
|
- 架构: amd64
|
2026-05-04 01:14:46 +08:00
|
|
|
|
- CPU: Intel(R) Core(TM) i9-9980HK CPU @ 2.40GHz
|
|
|
|
|
|
|
2026-05-04 09:57:29 +08:00
|
|
|
|
## 基准测试结果 (v1.0.2)
|
2026-05-04 01:14:46 +08:00
|
|
|
|
|
2026-05-04 09:57:29 +08:00
|
|
|
|
| 测试用例 | 迭代次数 | 耗时 (ns/op) | 内存分配 (B/op) | 分配次数 (allocs/op) |
|
2026-05-04 01:14:46 +08:00
|
|
|
|
| :--- | :--- | :--- | :--- | :--- |
|
2026-05-04 09:57:29 +08:00
|
|
|
|
| `BenchmarkLogger_RequestLog_Realistic` | 2,434,633 | 475.7 | 72 | 2 |
|
|
|
|
|
|
| `BenchmarkLoggerInfo` | 113,421 | 9,857 | - | - |
|
|
|
|
|
|
| `BenchmarkLoggerAsyncConcurrent` | 124,932 | 8,262 | - | - |
|
2026-05-04 01:14:46 +08:00
|
|
|
|
|
2026-05-04 09:57:29 +08:00
|
|
|
|
## 版本对比评估
|
|
|
|
|
|
|
|
|
|
|
|
| 版本 | 机制 | 耗时 (ns/op) | 易用性 |
|
|
|
|
|
|
| :--- | :--- | :--- | :--- |
|
|
|
|
|
|
| **v1.0.1** | 手动 Reset | ~270 | 较低 (需编写大量样板代码) |
|
|
|
|
|
|
| **v1.0.2** | 自动化 Reset | ~475 | 极高 (嵌入 BaseLog 即可) |
|
|
|
|
|
|
|
|
|
|
|
|
## 总结
|
|
|
|
|
|
- **性能评估**: 引入自动化重置机制后,单次日志操作耗时增加了约 200ns。这主要是反射探测和函数缓存调用的开销。但在高性能生产环境中,亚微秒(< 1μs)级的延迟依然极其优秀。
|
|
|
|
|
|
- **内存效率**: 内存分配保持在极低水平 (72B, 2次分配),说明对象池和 `reflect.Value.Clear()` 机制有效地控制了 GC 压力。
|
|
|
|
|
|
- **开发体验**: 开发者现在只需通过嵌入 `BaseLog` 即可创建自定义日志类型,不再需要手动编写冗长的 `Reset()` 和 `Base()` 方法。
|
|
|
|
|
|
- **优化点**: 采用了字段重置函数缓存,避免了每次日志记录都进行深度的反射解析。
|