How to get accurate ticks from a timer (high‑resolution timer) in Go

1 Answer

0 votes
package main

import (
    "fmt"
    "time"
)

func main() {
    // Start timer (nanoseconds)
    start := time.Now()

    // Do some work
    for i := 0; i < 1_000_000; i++ {
        // simple loop
    }

    // Stop timer
    elapsed := time.Since(start)

    // Raw ticks (nanoseconds)
    ticks := elapsed.Nanoseconds()

    // Convert to time units
    nanoseconds := float64(ticks)
    microseconds := nanoseconds / 1_000
    milliseconds := nanoseconds / 1_000_000
    seconds := nanoseconds / 1_000_000_000

    // Frequency (ticks per second)
    frequency := 1_000_000_000 // Go uses nanosecond resolution

    // Print results
    fmt.Println("Elapsed ticks (ns):", ticks)
    fmt.Println("Elapsed ms:", milliseconds)
    fmt.Println("Elapsed us:", microseconds)
    fmt.Println("Elapsed seconds:", seconds)
    fmt.Println("Timer frequency:", frequency, "Hz")
}



/*
run:

Elapsed ticks (ns): 319220
Elapsed ms: 0.31922
Elapsed us: 319.22
Elapsed seconds: 0.00031922
Timer frequency: 1000000000 Hz

*/

 



answered 3 days ago by avibootz
...