Что самый лучший, самый точный таймер в C++?

какой самый лучший, самый точный таймер в C++?

4 ответов


ответ на это зависит от платформы. Операционная система отвечает за отслеживание времени, и, следовательно, сам язык C++ не предоставляет языковых конструкций или встроенных функций для этого.

однако вот некоторые ресурсы для зависящих от платформы таймеров:

кросс-платформенное решение может быть boost::asio:: deadline_timer.


В C++11 вы можете переносно добраться до таймера с самым высоким разрешением с:

#include <iostream>
#include <chrono>
#include "chrono_io"

int main()
{
    typedef std::chrono::high_resolution_clock Clock;
    auto t1 = Clock::now();
    auto t2 = Clock::now();
    std::cout << t2-t1 << '\n';
}

пример:

74 nanoseconds

"chrono_io" является расширением, чтобы облегчить проблемы ввода / вывода с этими новыми типами и свободно доступен здесь.

существует также реализация <chrono> доступно в boost (все еще может быть на наконечнике багажника, не уверен, что он был выпущен).


под windows это будет QueryPerformanceCounter, хотя, видя, что вы не указали никаких условий, можно иметь внешний таймер с ультравысоким разрешением, который имеет интерфейс c++ для драйвера


стандарт C++ не говорит много о времени. Есть несколько функций, унаследованных от C через .

функции clock - это единственный способ, чтобы получить суб-секунды точность, но точность может быть как низко как одна секунда (это определяется макрос CLOCKS_PER_SEC). Кроме того, он измеряет не реальное время вообще, а процессорное время.

функции time измеряет Реальное время, но (обычно) только до ближайшей секунды.

для измерения реального времени с точностью до секунды вам нужна нестандартная библиотека.