46

Windows では、高解像度タイマーを作成するためのQueryPerformanceCounterfromのような便利な関数がいくつかあります。mmsystem.hLinuxに似たようなものはありますか?

4

6 に答える 6

31

ここで以前に尋ねられましたが、基本的には、使用できるブースト ptime 関数、または基本的に同じ目的を果たすことができる POSIX clock_gettime() 関数があります。

于 2009-02-11T20:29:53.210 に答える
30

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
}

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

于 2009-02-11T20:30:45.613 に答える
8

これは、Linux と Windows で高解像度のタイミングを行う方法を説明するリンクです...いいえ、RTSC を使用しないでください。

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

于 2011-01-21T16:54:13.690 に答える
4

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
于 2016-08-17T18:48:53.213 に答える
1

個人的には、Qt のQTimeクラスほど使いやすいクロスプラットフォーム タイマーはありません。

于 2011-07-04T21:44:02.060 に答える
1

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

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

編集

他の答えは、私のものより移植性が高いようです。

于 2009-02-11T20:28:48.580 に答える