This tiny Go package is a standalone and slightly enhanced version of goarista/monotime
.
It provides monotime.Now()
function, which returns current time from monotonic clock source. It's implemented using unexported runtime.nanotime()
function from Go runtime. It works on all platforms.
Starting from Go 1.9, the standard time
package transparently uses Monotonic Clocks when necessary, so this package is no longer relevant.
This repository has been archived and is no longer maintained.
In Go versions before 1.9, time.Now()
function from standard library returns real time (CLOCK_REALTIME
in POSIX) which can jump forwards and backwards as the system time is changed.
For time measurements, monotonic time (CLOCK_MONOTONIC
or CLOCK_MONOTONIC_RAW
on Linux) is often preferred, which is strictly increasing, without (notable) jumps.
See GoDoc.
package main
import (
"fmt"
"time"
"github.com/gavv/monotime"
)
func main() {
var start, elapsed time.Duration
start = monotime.Now()
time.Sleep(time.Millisecond)
elapsed = monotime.Since(start)
fmt.Println(elapsed)
// Prints: 1.062759ms
}
aristanetworks/goarista/monotime
(this package is based on it)spacemonkeygo/monotime
(currentruntime.nanotime()
is more complete)davecheney/junk/clock
(Linux-only)jaracil/clk
(Linux-only)