Uses monotonic clock instead of gettimeofday() which can provide wrong time if system clock changes (eg.due to NTP time sync, manual time change).
After this fix timespan measurements will be always stable and accurate.
static uint64_t Timer_now()
{
static uint64_t Timer_now()
{
- gettimeofday(&tv, NULL);
- e = tv.tv_sec * 1000000LL;
- e += tv.tv_usec;
+ clock_gettime(CLOCK_MONOTONIC, &ts);
+ e = ts.tv_sec * 1000000LL;
+ e += ts.tv_nsec / 1000LL; //convert to microseconds