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-05 13:23:25 +08:00
|
|
|
## 基准测试结果 (v1.0.3)
|
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-05 13:23:25 +08:00
|
|
|
| `BenchmarkLogger_RequestLog_Realistic` | 2,324,065 | 544.1 | 72 | 2 |
|
|
|
|
|
| `BenchmarkLoggerInfo` | 122,059 | 9,706 | - | - |
|
|
|
|
|
| `BenchmarkLoggerAsyncConcurrent` | 127,830 | 8,773 | - | - |
|
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 即可) |
|
2026-05-05 13:23:25 +08:00
|
|
|
| **v1.0.3** | 参数封装与解耦架构 | ~544 | 极高 (核心框架与业务结构完全分离) |
|
2026-05-04 09:57:29 +08:00
|
|
|
|
|
|
|
|
## 总结
|
2026-05-05 13:23:25 +08:00
|
|
|
- **性能评估**: v1.0.3 在核心日志记录上保持高性能。应用端自定义结构与框架对象池的结合被证明是高效的。
|
|
|
|
|
- **解耦架构**: `extra.go` 中的示例代码已被注释,成功将业务日志结构的定义权移交给应用层。框架仅保留最核心的异步写入和对象池管理能力。
|
|
|
|
|
- **内存效率**: 持续保持极低分配。
|
|
|
|
|
- **最佳实践**: 引导应用通过定义局部结构体并封装 `Logger` 扩展方法来记录日志,这不仅符合 Go 的工程规范,也极大地提升了系统的可维护性。
|