参照Obtaining Time in milliseconds获取在纳秒
时差为什么以下代码产生零作为输出?
int main()
{
steady_clock::time_point t1 = steady_clock::now();
//std::this_thread::sleep_for(std::chrono::milliseconds(1500));
steady_clock::time_point t2 = steady_clock::now();
auto timeC = t1.time_since_epoch().count();
auto timeD = t2.time_since_epoch().count();
auto timeA = duration_cast<std::chrono::nanoseconds > (t1.time_since_epoch()).count();
auto timeB = duration_cast<std::chrono::nanoseconds > (t2.time_since_epoch()).count();
std::cout << timeC << std::endl;
std::cout << timeB << std::endl;
std::cout << timeD << std::endl;
std::cout << timeA << std::endl;
std::cout << timeB - timeA << std::endl;
system("Pause");
return 0;
}
输出:
14374083030139686
1437408303013968600
14374083030139686
1437408303013968600
0
Press any key to continue . . .
我想应该是因为指令执行时间几纳秒的差异。
你的滴答不像纳秒,因此滴答计数不能以纳秒精度表示。一定?观察时钟的“周期”来验证。你不能获得比时钟周期更好的精度。 –
即使以毫秒为单位,它也会产生结果为零 –
那么,您的代码不会太多,所以这也不足为奇。如果你重新加入睡眠怎么办? –