--- tags: - golang - howto --- Simple timing can be done using the time package. ``` import time import fmt func main() { start := time.Now() elapsed = time.Since(start).Seconds() fmt.Printf("%.2fs", elapsed) } ``` Writing benchmarks. They look similar to tests: ``` import testing func BenchmarkSome(b *testing.B) { for i := 0; i < b.N; i++ { Some() } } ``` b.N is supplied by test driver and is dynamically changed depending on runtime. `go test -bench=` This just benchmarks a function being called many times, comparative benchmarks can be written using a regular function being called from Benchmarks, something like so : ``` import testing func doBench(b *testing.B, size int) { ... vary inputs size } func Bench1(b *testing.B) func Bench10(b *testing.B) func Bench100(b * testing.B) ```