Closed sendya closed 6 months ago
🤖
It's great to see that you've identified a potential performance improvement in the code! If you're able to propose a solution or a fix for this issue, we'd love to see a pull request from you. Your contribution could help improve the overall performance of the project. Thank you for considering to contribute!
SGTM, could you submit a enhancement PR with benchmark codes?
@Windfarer
Please look at this https://github.com/sendya/kratos/commit/d8eafb336a70954eeaa141133c727c5c54086b0e
kratos/log on main [!] via 🐹 v1.21.4 ❯ go test -benchmem -benchtime=10s -run=^\$ -bench=^BenchmarkHelperPrintfFilterLevel .
goos: linux
goarch: amd64
pkg: github.com/go-kratos/kratos/v2/log
cpu: AMD Ryzen 9 5900X 12-Core Processor
BenchmarkHelperPrintfFilterLevelInfoNoOptimize-24 100000000 119.0 ns/op 84 B/op 5 allocs/op
BenchmarkHelperPrintfFilterLevelInfoOptimized-24 592013310 20.29 ns/op 16 B/op 1 allocs/op
BenchmarkHelperPrintfFilterLevelDebugNoOptimize-24 60518269 197.4 ns/op 84 B/op 5 allocs/op
BenchmarkHelperPrintfFilterLevelDebugOptimized-24 60776246 197.3 ns/op 84 B/op 5 allocs/op
PASS
ok github.com/go-kratos/kratos/v2/log 50.426s
kratos/log on main [!] via 🐹 v1.21.4 took 50s ➜ go test -benchmem -benchtime=10s -run=^\$ -bench=^BenchmarkHelperPrintFilterLevel .
goos: linux
goarch: amd64
pkg: github.com/go-kratos/kratos/v2/log
cpu: AMD Ryzen 9 5900X 12-Core Processor
BenchmarkHelperPrintFilterLevelInfoNoOptimize-24 100000000 120.0 ns/op 84 B/op 5 allocs/op
BenchmarkHelperPrintFilterLevelInfoOptimized-24 597341275 20.09 ns/op 16 B/op 1 allocs/op
BenchmarkHelperPrintFilterLevelDebugNoOptimize-24 59979846 201.0 ns/op 84 B/op 5 allocs/op
BenchmarkHelperPrintFilterLevelDebugOptimized-24 53935786 219.3 ns/op 104 B/op 5 allocs/op
PASS
ok github.com/go-kratos/kratos/v2/log 50.466s
log.NewHelper(log.NewFilter(log.DefaultLogger, log.FilterLevel(log.LevelInfo)))
log.Debuf("some data... key1: %s, key2: %s, key3: %s", 'value1', 'value2', 'value3')
--> log.Log(LevelDebug, h.msgKey, h.sprintf(format, a...) )
h.sprintf(format, a...)
This function first performs string concat, and then enters *log.Filter to judge the level and returns nil
Please see the FAQ in our main README.md before submitting your issue.
What problem is the feature used to solve?
Requirements description of the feature
References