C++ межплатформенный таймер с высоким разрешением

Я видел это поведение в прошлом при совершении вызовов Ajax. Я полагаю, что это связано с тем, что браузеры являются только единственными, распараллелил, поэтому когда на звонок Ajax отвечают, поток работает над вызовом, таким образом, последовательно анимированный GIF должен остановиться на мгновение.

69
задан Amish Programmer 28 September 2009 в 17:08
поделиться

10 ответов

Для C ++ 03 :

Boost.Timer может работать, но это зависит от функции C clock и поэтому может не иметь достаточно хорошее разрешение для вас.

Boost.Date_Time включает в себя ptime класс , который ранее был рекомендован в Stack Overflow. См. Его документацию по microsec_clock :: local_time и microsec_clock :: universal_time , но обратите внимание на его оговорку, что «системы Win32 часто не достигают микросекундного разрешения с помощью этого API»

STLsoft предоставляет, помимо прочего, тонкие кроссплатформенные (Windows и Linux / Unix) оболочки C ++ вокруг API-интерфейсов, специфичных для ОС. В его библиотеке производительности есть несколько классов, которые сделают то, что вам нужно. (Чтобы сделать его кроссплатформенным,

40
ответ дан 24 November 2019 в 13:36
поделиться

Первый ответ на вопросы библиотеки C ++ - обычно BOOST: http://www.boost.org/doc/libs/1_40_0/libs/timer/timer.htm . Это делает то, что вы хотите? Вероятно, нет, но это начало.

Проблема в том, что вы хотите портативность, а функции таймера не универсальны в ОС.

2
ответ дан 24 November 2019 в 13:36
поделиться

Я не уверен в ваших требованиях. Если вы хотите рассчитать временной интервал, см. Тему ниже

Расчет прошедшего времени в программе на C в миллисекундах

1
ответ дан 24 November 2019 в 13:36
поделиться

Я видел, как это реализовано несколько раз как с закрытым исходным кодом собственные решения .... все они использовали #ifdef решения для нативных таймеров высокого разрешения Windows, с одной стороны, и таймеры ядра Linux, использующие struct timeval (см. man timeradd ) с другой стороны.

3
ответ дан 24 November 2019 в 13:36
поделиться

Это не лучший ответ, но вот несколько разговоров на сайте разработки игр о таймерах с высоким разрешением:

  1. http://www.gamedev.net/topic/374327- время-все-все /
  2. http://www.gamedev.net/topic/471804-high-resolution-timer/
  3. http://www.gamedev.net/topic/40600-high-resolution- Timing-in-games /
5
ответ дан 24 November 2019 в 13:36
поделиться

В библиотеке ACE также есть портативные таймеры высокого разрешения.

Doxygen для таймера высокого разрешения:
http://www.dre.vanderbilt.edu/Doxygen/5.7.2/ html / ace / a00244.html

5
ответ дан 24 November 2019 в 13:36
поделиться

Библиотека с открытым исходным кодом StlSoft предоставляет весьма хороший таймер как на платформах Windows, так и на Linux. Если вы хотите реализовать его самостоятельно, просто посмотрите их исходники.

5
ответ дан 24 November 2019 в 13:36
поделиться

I highly recommend boost::posix_time library for that. It supports timers in various resolutions down to microseconds I believe

4
ответ дан 24 November 2019 в 13:36
поделиться

Библиотеки STLSoft Мэтью Уилсона предоставляют несколько типов таймеров с соответствующими интерфейсы, чтобы вы могли подключать и работать. Среди предложений есть таймеры с низкой стоимостью, но с низким разрешением, и таймеры с высоким разрешением, но с высокой стоимостью. Существуют также устройства для измерения времени перед запуском потока и для измерения времени каждого процесса, а также все, что измеряет прошедшее время.

Это исчерпывающая статья, освещающая это в статье доктора Добба несколько лет назад. , хотя он охватывает только те, что определены в подпроекте WinSTL.

6
ответ дан 24 November 2019 в 13:36
поделиться

STLSoft имеет библиотеку производительности , которая включает набор классов таймера, некоторые из которых работают как для UNIX, так и для Windows.

2
ответ дан 24 November 2019 в 13:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: