8

CおよびC++に PHP 関数 microtime() に相当するものがあるかどうか疑問に思っています。私は周りを見回しましたが、決定的な答えを見つけることができませんでした。

ありがとう!

4

6 に答える 6

9

PHP の microtime() に完全に相当するものはありませんが、次のコードに基づいて同様の機能を持つ関数を作成できます。

Mac OS X とおそらく Linux/Unix も

#include <sys/time.h>
struct timeval time;
gettimeofday(&time, NULL); #This actually returns a struct that has microsecond precision.
long microsec = ((unsigned long long)time.tv_sec * 1000000) + time.tv_usec;

(ベース: http://brian.pontarelli.com/2009/01/05/getting-the-current-system-time-in-milliseconds-with-c/ )


ウィンドウズ:

unsigned __int64 freq;
QueryPerformanceFrequency((LARGE_INTEGER*)&freq);
double timerFrequency = (1.0/freq);

unsigned __int64 startTime;
QueryPerformanceCounter((LARGE_INTEGER *)&startTime);

//do something...

unsigned __int64 endTime;
QueryPerformanceCounter((LARGE_INTEGER *)&endTime);
double timeDifferenceInMilliseconds = ((endTime-startTime) * timerFrequency);

( https://stackoverflow.com/a/4568649/330067からの Darcara による回答)

于 2012-08-16T12:19:22.110 に答える
6

Linux では、同じ情報を提供するgettimeofdayを使用できます。実際、これは PHP が裏で使用している関数だと思います。

于 2012-07-22T22:06:07.847 に答える
4

C++11 では、いくつかの標準的な時間管理関数 (セクション 20.11「時間ユーティリティ」を参照) が追加されましたが、ほとんどのコンパイラはまだそれらをサポートしていません。

gettimeofdayほとんどの場合、POSIXなどの OS API を使用する必要があります。

于 2012-07-22T22:06:49.313 に答える
3

コードのタイミング セクションについては、目盛りを返すstd::clockを試してから、 で割りCLOCKS_PER_SECます。

于 2012-07-22T22:07:10.530 に答える
1

libUTP (uTorrent Transport Protocol ライブラリ) には、さまざまなプラットフォームでマイクロタイムを取得する良い例があります。

于 2012-07-22T22:21:23.463 に答える