refactor: use b.Loop() to simplify the code and improve performance#4642
refactor: use b.Loop() to simplify the code and improve performance#4642SuperQ merged 1 commit intoprometheus:mainfrom promalert:main
Conversation
|
Just stumbled on this one and gave it a look. This looks totally fine to me, and the go.dev blog says that
One thing though: It looks like you missed |
Signed-off-by: promalert <promalert@outlook.com>
Thank you for your suggestions. However, I found that ➜ alertmanager git:(main) ✗ go test -run=^$ -bench=. ./inhibit
goos: darwin
goarch: arm64
pkg: github.com/prometheus/alertmanager/inhibit
cpu: Apple M4
BenchmarkMutes/1_inhibition_rule,_1_inhibiting_alert-10 1170290 967.3 ns/op
BenchmarkMutes/10_inhibition_rules,_1_inhibiting_alert-10 1163775 969.8 ns/op
BenchmarkMutes/100_inhibition_rules,_1_inhibiting_alert-10 1195722 992.3 ns/op
BenchmarkMutes/1000_inhibition_rules,_1_inhibiting_alert-10 985664 1176 ns/op
BenchmarkMutes/10000_inhibition_rules,_1_inhibiting_alert-10 997599 1197 ns/op
BenchmarkMutes/1_inhibition_rule,_10_inhibiting_alerts-10 1057458 1086 ns/op
BenchmarkMutes/1_inhibition_rule,_100_inhibiting_alerts-10 1057344 1086 ns/op
BenchmarkMutes/1_inhibition_rule,_1000_inhibiting_alerts-10 1053831 1085 ns/op
BenchmarkMutes/1_inhibition_rule,_10000_inhibiting_alerts-10 1068854 1073 ns/op
BenchmarkMutes/100_inhibition_rules,_1000_inhibiting_alerts-10 1144471 1010 ns/op
BenchmarkMutes/10_inhibition_rules,_last_rule_matches-10 227220 5213 ns/op
BenchmarkMutes/100_inhibition_rules,_last_rule_matches-10 24458 46616 ns/op
BenchmarkMutes/1000_inhibition_rules,_last_rule_matches-10 2451 484289 ns/op
BenchmarkMutes/10000_inhibition_rules,_last_rule_matches-10 206 5388896 ns/op
PASS
ok github.com/prometheus/alertmanager/inhibit 30.887s
➜ alertmanager git:(main) ✗
➜ alertmanager git:(main) ✗ go test -run=^$ -bench=. ./silence
goos: darwin
goarch: arm64
pkg: github.com/prometheus/alertmanager/silence
cpu: Apple M4
BenchmarkMutes/1_silence_mutes_alert-10 368256 3233 ns/op
--- BENCH: BenchmarkMutes/1_silence_mutes_alert-10
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
... [output truncated]
BenchmarkMutes/10_silences_mute_alert-10 293503 3794 ns/op
--- BENCH: BenchmarkMutes/10_silences_mute_alert-10
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
... [output truncated]
BenchmarkMutes/100_silences_mute_alert-10 129474 9183 ns/op
--- BENCH: BenchmarkMutes/100_silences_mute_alert-10
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
... [output truncated]
BenchmarkMutes/1000_silences_mute_alert-10 14574 79275 ns/op
--- BENCH: BenchmarkMutes/1000_silences_mute_alert-10
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
... [output truncated]
BenchmarkMutes/10000_silences_mute_alert-10 1287 891458 ns/op
--- BENCH: BenchmarkMutes/10000_silences_mute_alert-10
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
... [output truncated]
BenchmarkQuery/100_silences-10 85952 13694 ns/op
--- BENCH: BenchmarkQuery/100_silences-10
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
... [output truncated]
BenchmarkQuery/1000_silences-10 8983 130814 ns/op
--- BENCH: BenchmarkQuery/1000_silences-10
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
... [output truncated]
BenchmarkQuery/10000_silences-10 715 1729676 ns/op
--- BENCH: BenchmarkQuery/10000_silences-10
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
mock.go:202: Mock Clock - Now([]) call, matched 0 traps
... [output truncated]
PASS
ok github.com/prometheus/alertmanager/silence 12.547s
➜ alertmanager git:(main) ✗
➜ alertmanager git:(main) ✗
|
Spaceman1701
left a comment
There was a problem hiding this comment.
Thanks! This LGTM
We'll need to wait for a real maintainer to merge this.
These changes use b.Loop() to simplify the code and improve performance
Supported by Go Team, more info: https://go.dev/blog/testing-b-loop
Before:
After: