How to get accurate ticks from a timer (high‑resolution timer) in C++

1 Answer

0 votes
#include <iostream>
#include <chrono>

int main() {
    using clock = std::chrono::high_resolution_clock;

    // Start timer
    auto start = clock::now();

    // Do some work
    for (volatile int i = 0; i < 1'000'000; i++);

    // Stop timer
    auto end = clock::now();

    // Raw tick count (nanoseconds)
    auto ticks = std::chrono::duration_cast<std::chrono::nanoseconds>(end - start).count();

    // Convert to time units
    double nanoseconds  = ticks;
    double microseconds = nanoseconds / 1'000.0;
    double milliseconds = nanoseconds / 1'000'000.0;
    double seconds      = nanoseconds / 1'000'000'000.0;

    // Frequency (ticks per second)
    long long frequency = 1'000'000'000LL; // chrono uses nanoseconds

    // Print results
    std::cout << "Elapsed ticks (ns): " << ticks << "\n";
    std::cout << "Elapsed ms: " << milliseconds << "\n";
    std::cout << "Elapsed us: " << microseconds << "\n";
    std::cout << "Elapsed seconds: " << seconds << "\n";
    std::cout << "Timer frequency: " << frequency << " Hz\n";
}



/*
run:

Elapsed ticks (ns): 496290
Elapsed ms: 0.49629
Elapsed us: 496.29
Elapsed seconds: 0.00049629
Timer frequency: 1000000000 Hz

*/

 



answered May 9 by avibootz
...