monotonic_clock icon indicating copy to clipboard operation
monotonic_clock copied to clipboard

Portable C library for getting monotonic time

monotonic_clock/README

By Thomas Habets [email protected] 2010

What

Provides access to a clock that always increases at the same rate. Unlike the system time (e.g. gettimeofday()) this will never decrease.

However, if there's no monotonic clock on your system then this library will fall back to gettimeofday().

For more information see: https://blog.habets.se/2010/09/gettimeofday-should-never-be-used-to-measure-time.html

Portability

Verified to be working:

Linux clock_gettime() OpenBSD clock_gettime() Solaris clock_gettime() MacOS X mach_absolute_time()

Using monotonic_clock in a project

You can either install it like a normal shared library:

./configure
make
sudo make install

Or import it into your project as a git submodule:

cd /path/to/project
git submodule add https://github.com/ThomasHabets/monotonic_clock.git
git submodule init
git submodule update

Add to configure.ac:

  AC_CONFIG_SUBDIRS([monotonic_clock])
  AC_SEARCH_LIBS([clock_gettime], [rt])

Add to Makefile.am:

  SUBDIRS=monotonic_clock
  AM_CFLAGS=-I$(top_builddir)/monotonic_clock/include @AM_CFLAGS@
  myproghere_LDADD=$(top_builddir)/monotonic_clock/.libs/libmonotonic_clock.a

Send questions/suggestions/patches/rants/0days to [email protected]