-
Notifications
You must be signed in to change notification settings - Fork 2.3k
refactor: use b.Loop() to simplify the code and improve performance #4642
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
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 <[email protected]>
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) ✗
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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: