Use CLOCK_MONOTONIC_COARSE rather than COARSE_MONOTONIC_RAW.
The raw clock variant is slow (even relative to plain CLOCK_MONOTONIC), whereas the coarse clock variant is faster than CLOCK_MONOTONIC, but still has resolution (~1ms) that is adequate for our purposes. This resolves #479.
This commit is contained in:
parent
c443b67561
commit
1d57c03e33
12
configure.ac
12
configure.ac
@ -1342,16 +1342,16 @@ if test "x$je_cv_cray_prgenv_wrapper" = "xyes" ; then
|
||||
fi
|
||||
fi
|
||||
|
||||
dnl check for CLOCK_MONOTONIC_RAW (Linux-specific).
|
||||
JE_COMPILABLE([clock_gettime(CLOCK_MONOTONIC_RAW, ...)], [
|
||||
dnl check for CLOCK_MONOTONIC_COARSE (Linux-specific).
|
||||
JE_COMPILABLE([clock_gettime(CLOCK_MONOTONIC_COARSE, ...)], [
|
||||
#include <time.h>
|
||||
], [
|
||||
struct timespec ts;
|
||||
|
||||
clock_gettime(CLOCK_MONOTONIC_RAW, &ts);
|
||||
], [je_cv_clock_monotonic_raw])
|
||||
if test "x${je_cv_clock_monotonic_raw}" = "xyes" ; then
|
||||
AC_DEFINE([JEMALLOC_HAVE_CLOCK_MONOTONIC_RAW])
|
||||
clock_gettime(CLOCK_MONOTONIC_COARSE, &ts);
|
||||
], [je_cv_clock_monotonic_coarse])
|
||||
if test "x${je_cv_clock_monotonic_coarse}" = "xyes" ; then
|
||||
AC_DEFINE([JEMALLOC_HAVE_CLOCK_MONOTONIC_COARSE])
|
||||
fi
|
||||
|
||||
dnl check for CLOCK_MONOTONIC.
|
||||
|
@ -77,9 +77,9 @@
|
||||
#undef JEMALLOC_HAVE_ISSETUGID
|
||||
|
||||
/*
|
||||
* Defined if clock_gettime(CLOCK_MONOTONIC_RAW, ...) is available.
|
||||
* Defined if clock_gettime(CLOCK_MONOTONIC_COARSE, ...) is available.
|
||||
*/
|
||||
#undef JEMALLOC_HAVE_CLOCK_MONOTONIC_RAW
|
||||
#undef JEMALLOC_HAVE_CLOCK_MONOTONIC_COARSE
|
||||
|
||||
/*
|
||||
* Defined if clock_gettime(CLOCK_MONOTONIC, ...) is available.
|
||||
|
@ -110,14 +110,14 @@ nstime_get(nstime_t *time)
|
||||
|
||||
nstime_init(time, ticks_100ns * 100);
|
||||
}
|
||||
#elif JEMALLOC_HAVE_CLOCK_MONOTONIC_RAW
|
||||
#elif JEMALLOC_HAVE_CLOCK_MONOTONIC_COARSE
|
||||
# define NSTIME_MONOTONIC true
|
||||
static void
|
||||
nstime_get(nstime_t *time)
|
||||
{
|
||||
struct timespec ts;
|
||||
|
||||
clock_gettime(CLOCK_MONOTONIC_RAW, &ts);
|
||||
clock_gettime(CLOCK_MONOTONIC_COARSE, &ts);
|
||||
nstime_init2(time, ts.tv_sec, ts.tv_nsec);
|
||||
}
|
||||
#elif JEMALLOC_HAVE_CLOCK_MONOTONIC
|
||||
|
Loading…
Reference in New Issue
Block a user