Переносимая двойная временная метка с хорошей точностью в C ++?
Не существует портативного способа получения высокоточной временной метки (миллисекунды) без использования сторонних библиотек.Максимальная точность, которую вы получите, составляет 1 секунду, используя time
/ localtime
/ gmtime
.
Если вы хорошо работаете со сторонними библиотеками, используйте Boost или Qt 4.
как для Unix, так и для Windows, как это сделать?
GetSystemTime
в Windows и gettimeofday
в Linux.
Обратите внимание, что если выЕсли вы планируете использовать временные метки для определения порядка некоторых событий, это может быть плохой идеей.Системные часы могут иметь очень ограниченную точность (10 миллисекунд на платформе Windows), и в этом случае несколько выполненных операций могут привести к одной и той же отметке времени.Таким образом, для определения порядка событий вам понадобятся «логические метки времени» («векторные часы» - один из примеров).
На платформе Windows существуют высокоточные функции, которые можно использоватьопределить, сколько времени прошло с некоторой точки в прошлом (QueryPerformanceCounter
), но они не связаны с временными метками.