Таймер высокого разрешения с С++ и Linux?

В Windows есть несколько удобных функций, таких как QueryPerformanceCounter от mmsystem.h, чтобы создать таймер с высоким разрешением. Есть ли что-то подобное для 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
}

Смотрите: Этот ответ для получения дополнительной информации

Ответ 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.