#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
*/