首页 > 解决方案 > C++打印时差?

问题描述

在 C++ 中,我写道:

time_t tmp1, tmp2;
time(&tmp1);
sleep(1);
time(&tmp2);
std::cout << tmp2-tmp1;

但是每次我运行它我都会看到 1 打印出来,为什么结果太完美了?它不应该包含几毫秒吗?

标签: c++timelibc

解决方案


我建议使用std::chrono::steady_clock计时功能:

auto const start       = std::chrono::steady_clock::now();
f();
auto const stop        = std::chrono::steady_clock::now();
auto const duration    = stop-start;
auto const duration_ms = std::chrono::duration_cast<std::chrono::milliseconds>(duration);
//                                                               ^^^^^^^^^^^^

std::cout << duration_ms.count();

推荐阅读