Fix for https://github.com/fatbob313/umurmur/issues/20
authorSzymon Pusz <szymon@pusz.net>
Sat, 9 Nov 2013 10:57:59 +0000 (11:57 +0100)
committerSzymon Pusz <szymon@pusz.net>
Sat, 9 Nov 2013 11:02:19 +0000 (12:02 +0100)
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.

src/timer.c

index 5383e0e85d06ad0fbac2eb45db10ddb32b60b3dc..55f5f9cf2905e82492dbbbdaf9e17d6a9fd5d4bf 100644 (file)
 
 static uint64_t Timer_now()
 {
-       struct timeval tv;
+       struct timespec ts;
        uint64_t e;
        
-       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
        return e;
 }