Chrono and Formatting
Chrono and Formatting
Measure time correctly and produce readable output with modern formatting APIs.
Chrono and Formatting
Measure time correctly and produce readable output with modern formatting APIs.
Use std::chrono::steady_clock for elapsed time and timeouts. Use std::chrono::system_clock for timestamps that correspond to calendar time.
using namespace std::chrono_literals;
auto start = std::chrono::steady_clock::now();
do_work();
auto end = std::chrono::steady_clock::now();
auto elapsed = std::chrono::duration_cast<std::chrono::milliseconds>(end - start);
steady_clock will not jump backwards if the system time changes.
auto retry_delay = 250ms;
auto max_wait = 5s;
Duration literals remove the guesswork around raw integers.
auto message = std::format("processed {} items in {} ms", count, elapsed.count());
std::cout << message << '\n';
If your standard library supports it, std::print can write directly:
std::print("processed {} items in {} ms\n", count, elapsed.count());
void benchmark_sort(std::vector<int> values) {
auto start = std::chrono::steady_clock::now();
std::ranges::sort(values);
auto end = std::chrono::steady_clock::now();
auto ms = std::chrono::duration_cast<std::chrono::milliseconds>(end - start);
std::print("sorted {} values in {} ms\n", values.size(), ms.count());
}
std::cout << ... chain with std::format.