спецификация времени на компиляторах Windows

В posix можно использовать timepec для точного вычисления продолжительности времени (например, секунд и миллисекунд). К сожалению, мне нужно перейти на Windows с компилятором Visual Studio. Библиотека VS time.h не объявляет спецификацию времени, поэтому я ищу другие варианты. Насколько мог поискать, можно ли использовать часы и time_t, хотя я не мог проверить, насколько точен подсчет миллисекунд с подсчетом часов.

Что вы делаете / используете для расчета времени выполнения операции (если возможно, используя стандартную библиотеку C ++)?


person PLS    schedule 31.05.2011    source источник


Ответы (2)


Обычно используется функция GetTickCount для этого.

Также похожая тема: Время C ++, миллисекунды с последней секунды

person Grim    schedule 31.05.2011
comment
Есть ли способ использовать стандартную библиотеку C ++. Это был бы бонус. Я забыл упомянуть и об этом - person PLS; 31.05.2011
comment
Проверьте эту ветку, она содержит ответ: stackoverflow.com/questions/117346/ - person Grim; 31.05.2011
comment
Спасибо @Grim. Видно, что это не переносно - person PLS; 31.05.2011
comment
Решение для ускорения в указанном потоке, вероятно, является вашим наиболее переносимым решением. - person Elemental; 01.06.2011

В зависимости от того, какую точность вы хотите, я понимаю, что часы и time_t не точны до миллисекундного уровня. Аналогичным образом обычно используется GetTickCount () (в документах MS говорится, что точность составляет 10-15 мс), но она недостаточно точна для многих целей.

Я использую QueryPerformanceFrequency и QueryPerformanceCounter для точного измерения времени производительности.

person Elemental    schedule 31.05.2011
comment
time_t с точностью до одной секунды, так как это целочисленный тип, представляющий секунды; субсекундная точность математически невозможна. - person Jonathan Grynspan; 31.05.2011
comment
Так что я буду придерживаться компилятора - person PLS; 31.05.2011
comment
Фактически вы застрянете с Windows API, а не с компилятором. - person Elemental; 01.06.2011