diff options
| author | alex emery <[email protected]> | 2024-11-03 15:33:28 +0000 |
|---|---|---|
| committer | alex emery <[email protected]> | 2024-11-03 15:33:28 +0000 |
| commit | 508527f52de524a4fd174d386808e314b4138b11 (patch) | |
| tree | 2593af258b67decbf0207e2547b7ea55f6b051d7 /content/posts/2024-08-25-01.md | |
| parent | 22bfae8f9637633d5608caad3ce56b64c6819505 (diff) | |
feat: static builds
Diffstat (limited to 'content/posts/2024-08-25-01.md')
| -rw-r--r-- | content/posts/2024-08-25-01.md | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/content/posts/2024-08-25-01.md b/content/posts/2024-08-25-01.md new file mode 100644 index 0000000..8aee591 --- /dev/null +++ b/content/posts/2024-08-25-01.md @@ -0,0 +1,45 @@ +--- +title: "Go Benchmarking" +tags: posts +toc: true +--- + +The benchmark cycle: +1. write a benchmark +2. run a benchmark +3. get a profile +4. optimise +5. run your tests +6. goto 2. + +# cpuprofile +```shell +go test -test=XXX -bench <regex> -cpuprofile <file> +``` + +# memprofile +```shell +go test -test=XXX -bench <regex> -memprofile <file> -benchmem +``` + +# pprof +[pprof usage](https://github.com/google/pprof/blob/main/doc/README.md) + +```shell +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 function + - `cum`: (cumulative) profile samples in this function and its callees +- 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
\ No newline at end of file |
