В Windows есть несколько удобных функций, таких как QueryPerformanceCounter
от mmsystem.h
, чтобы создать таймер с высоким разрешением.
Есть ли что-то подобное для Linux?
Таймер высокого разрешения с С++ и Linux?
Ответ 1
Он был задан перед здесь - но в основном есть функция ptime для увеличения, которую вы можете использовать, или функцию POSIX clock_gettime(), которая может служить в основном тем же самым цель.
Ответ 2
Для Linux (и BSD) вы хотите использовать clock_gettime().
#include <sys/time.h>
int main()
{
timespec ts;
// clock_gettime(CLOCK_MONOTONIC, &ts); // Works on FreeBSD
clock_gettime(CLOCK_REALTIME, &ts); // Works on Linux
}
Смотрите: Этот ответ для получения дополнительной информации
Ответ 3
Здесь ссылка, описывающая, как делать синхронизацию с высоким разрешением в Linux и Windows... и нет, не используйте RTSC.
Ответ 4
С С++ 11 используйте std::chrono::high_resolution_clock
.
Пример:
#include <iostream>
#include <chrono>
typedef std::chrono::high_resolution_clock Clock;
int main()
{
auto t1 = Clock::now();
auto t2 = Clock::now();
std::cout << "Delta t2-t1: "
<< std::chrono::duration_cast<std::chrono::nanoseconds>(t2 - t1).count()
<< " nanoseconds" << std::endl;
}
Вывод:
Delta t2-t1: 131 nanoseconds
Ответ 5
У меня нет ничего, кроме этой ссылки: http://www.mjmwired.net/kernel/Documentation/rtc.txt
Я уверен, что RTC - это то, что вы ищете.
ИЗМЕНИТЬ
Другие ответы кажутся более переносимыми, чем мои.
Ответ 6
Для моих денег нет более простого в использовании кросс-платформенного таймера, чем класс Qt QTime.