Skip to content
Snippets Groups Projects
  • Auke Kok's avatar
    4ac1e9bc
    Clocksource: use a better clock if available. · 4ac1e9bc
    Auke Kok authored
    clock_gettime() is a far better clock than gettimeofday().
    
    Even better than clock_gettime() is that you can select either
    CLOCK_MONOTONIC, or even CLOCK_MONOTONIC_RAW. These clocks offer
    high precision time. And the _RAW variant will never roll back
    due to NTP drift or daylight savings, or otherwise.
    
    I've adjusted this code to select the right clock method auto-
    matically based on what's available in the OS. This means that
    if you're running a very old linux version, MacOS or other,
    you will automatically get the best clocksource available.
    
    I've tested all Linux clocksources by selectively compiling and
    running a 10k+ timer test suite. In all cases I confirmed that
    the 3 POSIX Linux clocksources worked properly, and were
    selected properly.
    
    I've modified the OS X compile path to use the high-res clock
    source for all time functions, but I can't confirm it works or
    that it compiles.
    
    As for WIN32, I confirmed that the used clocksource is indeed
    a Monotonic clocksource, so good news: that code section appears
    to be exactly what it should be.
    4ac1e9bc
    History
    Clocksource: use a better clock if available.
    Auke Kok authored
    clock_gettime() is a far better clock than gettimeofday().
    
    Even better than clock_gettime() is that you can select either
    CLOCK_MONOTONIC, or even CLOCK_MONOTONIC_RAW. These clocks offer
    high precision time. And the _RAW variant will never roll back
    due to NTP drift or daylight savings, or otherwise.
    
    I've adjusted this code to select the right clock method auto-
    matically based on what's available in the OS. This means that
    if you're running a very old linux version, MacOS or other,
    you will automatically get the best clocksource available.
    
    I've tested all Linux clocksources by selectively compiling and
    running a 10k+ timer test suite. In all cases I confirmed that
    the 3 POSIX Linux clocksources worked properly, and were
    selected properly.
    
    I've modified the OS X compile path to use the high-res clock
    source for all time functions, but I can't confirm it works or
    that it compiles.
    
    As for WIN32, I confirmed that the used clocksource is indeed
    a Monotonic clocksource, so good news: that code section appears
    to be exactly what it should be.
lua_api.txt 163.93 KiB