Name
Time::Nanos - Nanosecond time resolution via clock_gettime().
Synopsis
use Time::Nanos;
my $nanoseconds = nanos();
my $microseconds = micros();
my $milliseconds = millis();
my ($seconds, $nanoseconds) = nanos(1);
my ($seconds, $microseconds) = micros(1);
my ($seconds, $milliseconds) = millis(1);
Functions
nanos()
my $ns = nanos();
my ($sec, $nsec) = nanos(1);
Returns the current time as an integer number of nanoseconds. With a true argument, returns a list of (seconds, nanoseconds) instead.
micros()
my $us = micros();
my ($sec, $usec) = micros(1);
Returns the current time as an integer number of microseconds. With a true argument, returns a list of (seconds, microseconds) instead.
millis()
my $ms = millis();
my ($sec, $msec) = millis(1);
Returns the current time as an integer number of milliseconds. With a true argument, returns a list of (seconds, milliseconds) instead.
Time::Nanos::clock_source()
Time::Nanos::clock_source('monotonic');
Selects which clock source the functions use. Defaults to 'realtime'.
Valid values: 'realtime' or 'monotonic'.
clock_source() is not exported, so it must be called fully qualified.
Description
This module provides high-resolution time via clock_gettime().
The default clock is CLOCK_REALTIME. 'realtime' uses the system clock,
which measures time since the Unix epoch. This is susceptible to clock skew from
NTP updates, user clock changes, etc. When using 'realtime', it is possible
(but rare) to observe a negative duration when comparing two successive calls.
When using 'monotonic' the clock reference epoch is unspecified, so a single
reading is not in itself a useful measurement of time. These values are only
meaningful when compared against each other to measure elapsed time.
On 32-bit Perl builds the nanosecond granularity is around 256 ns rather than
an exact value. The (seconds, fraction) array forms remain usable.