log/TEST.md

28 lines
1.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 日志性能测试报告
## 测试环境
- 操作系统: darwin
- 架构: amd64
- CPU: Intel(R) Core(TM) i9-9980HK CPU @ 2.40GHz
## 基准测试结果 (v1.0.2)
| 测试用例 | 迭代次数 | 耗时 (ns/op) | 内存分配 (B/op) | 分配次数 (allocs/op) |
| :--- | :--- | :--- | :--- | :--- |
| `BenchmarkLogger_RequestLog_Realistic` | 2,434,633 | 475.7 | 72 | 2 |
| `BenchmarkLoggerInfo` | 113,421 | 9,857 | - | - |
| `BenchmarkLoggerAsyncConcurrent` | 124,932 | 8,262 | - | - |
## 版本对比评估
| 版本 | 机制 | 耗时 (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()` 方法
- **优化点**: 采用了字段重置函数缓存避免了每次日志记录都进行深度的反射解析