Search code examples
timetimerbenchmarkinggo

How do you time a function in Go and return its runtime in milliseconds?


How do you time a function in Go and return its runtime in milliseconds?


Solution

  • Use the Go testing package to benchmark the function. For example,

    package main
    
    import (
        "fmt"
        "testing"
    )
    
    // the function to be benchmarked
    func Function(n int) int64 {
        n64 := int64(n)
        return n64 * n64
    }
    
    func BenchmarkFunction(b *testing.B) {
        n := 42
        for i := 0; i < b.N; i++ {
            _ = Function(n)
        }
    }
    
    func main() {
        br := testing.Benchmark(BenchmarkFunction)
        fmt.Println(br)
    }
    

    Output:

    500000000            4.22 ns/op
    

    You can also use the Go gotest command to run benchmarks.