2013-05-15 2 views
0

Дело в том, чтобы получить время на C++ в виде миллисекунд или наносекунд. Однако я знаю только способ получить время в секундах, как это:Как получить время в миллисекундах или наносекундах в C++

#include <ctime> 
... 
time = ctime(0) ; 
... 

Я хочу знать, как сделать подобную операцию, чтобы получить время в миллисекундах или наносекунд. Какие заголовки я должен включить, какие функции вызывать и каковы их аргументы?

+0

Можете ли вы использовать C++ 11? –

+3

http://en.cppreference.com/w/cpp/chrono –

+1

std :: chrono or boost :: chrono – nogard

ответ

1

Если вы в порядке с реализацией платформы (окна), посмотрите на QueryPerformanceCounter API.

И this answer имеет быстрый пример использования.

+2

«посмотрите на QueryPerformanceCounter» - существует безумие ... даже когда он решает использовать многообещающий регистр RTC, многие проблемы, в том числе вообще неспособные связывать отсчеты счетчиков счетчиков, взятых на одном ядре процессора, на те, что приняты на другом (и переменные тактовые частоты в режимах энергосбережения, проблемы вокруг уклонения и т. д.). Но, по крайней мере, это иногда полезно, как для рабочих столов, когда один поток привязан к определенному ядру .... –

+0

этот ответ выглядит наиболее полезным для меня и делает довольно точное время – user1978386

+0

Безумие! Безумие, я говорю! bwhahaha ... На любой таймер с высоким разрешением будут влиять причуды системы, на которой он работает. То же самое относится к boost (см. Оговорки в их doco и распространенном std lib, хотя я никогда не использовал это). Невозможно использовать его для калибровки темпа, но QPC хорошо работает для меня в повседневном использовании. – dkackman

Смежные вопросы