go的高性能日志库 go-logger与simplelog

GitHub - donnie4w/go-logger: golang 高性能日志库, 支持日志格式化, 文件压缩, 切割备份

go-logger的实现与simplelog相同,是golang极为高效的日志工具库,实现方式也很简洁

go-logger与uber实现的高性能日志库zap 从性能压测结果看,

go-logger在性能与内存消耗上都有优势。

性能测试:

测试说明:以下 simplelog 即 go-logger

测试日志库描述
zap"go.uber.org/zap" 高性能日志库常规格式化输出
simplelogsimplelog 常规格式化输出
simplelog NoFORMATsimplelog 无格式化输出
simplelog writesimplelog write 方法写数据
go/ loggo 自带 log 库格式化输出

测试数据 1

ns/opB/opallocs/op
zap182289268763366
zap173049070373366
simplelog173277764612963
simplelog175844664192963
simplelog NoFORMAT267055643401121
simplelog NoFORMAT269415441921121
simplelog write294905840871121
simplelog write284364940931121
go/ log216205255512963
go/ log213916857152963

Parallel 测试 2

ns/opB/opallocs/op
zap1000000105723366
zap1000000104143376
simplelog133030088032963
simplelog136303489452963
simplelog NoFORMAT205391170761121
simplelog NoFORMAT167736068881121
simplelog write193993363041121
simplelog write192235269381121
go/ log120403996122963
go/ log136280788752963

Parallel 测试 3

ns/opB/opallocs/op
zap1000000103313366
zap1000000105953376
simplelog135283488382963
simplelog141145887542963
simplelog NoFORMAT226659753311121
simplelog NoFORMAT209045556311121
simplelog write206287057461121
simplelog write203779259631121
go/ log126044593982803
go/ log127256091232803

Parallel 测试 4

ns/opB/opallocs/op
zap1000000102303366
zap1000000102763376
simplelog133255587742963
simplelog139125692262963
simplelog NoFORMAT215400854831121
simplelog NoFORMAT211579558531121
simplelog write205972260691121
simplelog write196809261161121
go/ log124976799302803
go/ log121171998222803

打印各库输出结果 (其中一行)

2023-07-10T19:58:15.138+0800    DEBUG   logtest/benchmark_test.go:82    >>>aaaaaaaaaaaaaaaaaaaaaaaaaaaaa
[DEBUG]2023/07/10 19:58:57 benchmark_test.go:94: >>>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
[DEBUG]2023/06/10 01:25:55.028277 log_test.go:46:>>>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
[DEBUG]2023/06/10 01:25:55.028277 log_test.go:55:>>>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
[debug]2023/07/10 20:00:53.634554 benchmark_test.go:125: >>>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

测试程序

logtest

从压测结果上看,zap与go-logger都是非常高效的日志库,效率已经非常接近直接调用底层io写文件数据。go-logger的write方法也正是直接调用底层接口写文件数据。

同样时常规打印时

循环压测时:zap与go-logger大概比底层写数据慢30%,go-logger稍快,内存消耗方面go-logger需要分配的内存更少,分配的次数也比zap少一半。

在并发压测时,zap比底层大概慢90-100%,go-logger大概慢50-60%.

go-logger在非格式化打印时,性能与内存消耗,与直接调用底层写文件一样,没有多余消耗。

测试数据受环境因素影响,数据不能适用所有环境. 需要获取本地测试数据时,可以在本地跑一下测试数据 logtest

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值