web-dev-qa-db-ja.com

C ++およびLinuxでの高解像度タイマー?

Windowsには、mmsystem.hQueryPerformanceCounterのような便利な関数があり、高解像度タイマーを作成します。 Linuxに似たようなものはありますか?

46
okoman

ここで前に尋ねた -ですが、基本的には、使用できるboost ptime関数、または基本的に同じ目的に役立つPOSIX clock_gettime()関数があります。

32
Nik Reiman

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
}

参照: この回答 詳細については

30
grieve

LinuxおよびWindowsで高解像度のタイミングを実行する方法を説明するリンクを次に示します...いいえ、RTSCを使用しないでください。

https://web.archive.org/web/20160330004242/http://tdistler.com/2010/06/27/high-performance-timing-on-linux-windows

8
tjd

C++ 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
3
Martin G

このリンクしかありません: http://www.mjmwired.net/kernel/Documentation/rtc.txt

RTCがあなたが探しているものだと確信しています。

[〜#〜] edit [〜#〜]

他の答えは私のものより移植性があるようです。

1
Oliver N.

私のお金では、Qtの QTime クラスほど使いやすいクロスプラットフォームタイマーはありません。

1
Alan Turing