summaryrefslogtreecommitdiff
path: root/content/posts/2024-08-25-01.md
diff options
context:
space:
mode:
authoralex emery <[email protected]>2024-11-03 15:33:28 +0000
committeralex emery <[email protected]>2024-11-03 15:33:28 +0000
commit508527f52de524a4fd174d386808e314b4138b11 (patch)
tree2593af258b67decbf0207e2547b7ea55f6b051d7 /content/posts/2024-08-25-01.md
parent22bfae8f9637633d5608caad3ce56b64c6819505 (diff)
feat: static builds
Diffstat (limited to 'content/posts/2024-08-25-01.md')
-rw-r--r--content/posts/2024-08-25-01.md45
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