Merge pull request #451 from arthurmaciel/master

@arthurmaciel Moved from gettimeofday() to the more precise clock_gettime()
This commit is contained in:
Justin Ethier 2021-03-03 21:20:51 -05:00 committed by GitHub
commit 39c93e33be
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -10,12 +10,9 @@
(export (export
current-second current-second
current-jiffy current-jiffy
jiffies-per-second jiffies-per-second)
) (include-c-header "<time.h>")
(include-c-header "<sys/time.h>") (import (scheme base))
(import (scheme base)
)
;; TODO: get an FFI syntax for including C header files, even if it is not needed for this library
(begin (begin
(define-c current-second (define-c current-second
"(void *data, int argc, closure _, object k)" "(void *data, int argc, closure _, object k)"
@ -25,10 +22,10 @@
return_closcall1(data, k, &box); ") return_closcall1(data, k, &box); ")
(define-c current-jiffy (define-c current-jiffy
"(void *data, int argc, closure _, object k)" "(void *data, int argc, closure _, object k)"
" struct timeval tv; " struct timespec now;
make_double(box, 0.0); make_double(box, 0.0);
gettimeofday(&tv, NULL); /* TODO: longer-term consider using clock_gettime instead */ clock_gettime(CLOCK_MONOTONIC, &now);
long long jiffy = (tv.tv_sec)*1000000LL + tv.tv_usec; long long jiffy = (now.tv_sec)*1000000LL + now.tv_nsec/1000; // nano->microseconds
/* Future consideration: /* Future consideration:
mp_int bn_tmp, bn_tmp2, bn_tmp3; mp_int bn_tmp, bn_tmp2, bn_tmp3;
mp_init(&bn_tmp); mp_init(&bn_tmp);
@ -50,5 +47,4 @@
"(void *data, int argc, closure _, object k)" "(void *data, int argc, closure _, object k)"
" int n = 1000000; " int n = 1000000;
object obj = obj_int2obj(n); object obj = obj_int2obj(n);
return_closcall1(data, k, obj); ") return_closcall1(data, k, obj); ")))
))