.. | ||
.travis.yml | ||
LICENSE | ||
monotime_test.go | ||
monotime.go | ||
monotime.s | ||
README.md |
monotime
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.
Not needed for Go 1.9+
Starting from Go 1.9, the standad time
package transparently uses Monotonic Clocks when necessary, so this package is no longer relevant.
Synopsis
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.
Documentation
See GoDoc.
Usage example
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
}
Similar packages
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)