a73x
high effort, low reward← Posts
Go Benchmarking
Table of Contents
The benchmark cycle:
- write a benchmark
- run a benchmark
- get a profile
- optimise
- run your tests
- goto 2.
cpuprofile
go test -test=XXX -bench <regex> -cpuprofile <file>
memprofile
go test -test=XXX -bench <regex> -memprofile <file> -benchmem
pprof
go pprof -http=:8080 profile.pb.gz
will show a web UI for analysing the profile.
views
- flame graph:
localhost:8080/ui/flamegraph- shows percentage breakdown of how much resource each "call" made.
- clicking a box will make it "100%" allowing for deep diving
- right click "show source code" to view
- top:
localhost:8080/ui/top- shows top functions
flat: profile samples in this functioncum: (cumulative) profile samples in this function and its callees
- shows top functions
- source:
localhost:8080/ui/source- each source line is annotated with the time spent in that source line
- the first number does not count time spent in functions called from the source line
- the second number does
- each source line is annotated with the time spent in that source line