Ссылаясь на Получение времени в миллисекундах
Почему приведенный ниже код выводит ноль в качестве вывода?
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 . . .
Я предполагаю, что должна быть разница в несколько наносекунд из-за времени выполнения инструкции.
period
, чтобы проверить. Вы не можете получить лучшую точность, чем период часов. - person Lightness Races in Orbit   schedule 20.07.2015now()
, вероятно, включает вызов ОС, который нельзя оптимизировать. Ваша проблема в том, что вы смотрите на часы чаще, чем двигаются их стрелки. - person Bo Persson   schedule 20.07.2015