Microtime()相当于C和C ++?
我想知道在C 和 C ++中是否有相当于PHP函数microtime()的东西。 我环顾四周但找不到明确的答案。
谢谢!
在Linux上,您可以使用gettimeofday ,它应该提供相同的信息。 事实上,我认为这是PHP使用的function。
没有完全等同于PHP的microtime(),但您可以使用基于以下代码的类似function的函数:
Mac OS X,也可能是Linux / Unix
#include 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);
(由Darcara回答,来自: https ://stackoverflow.com/a/4568649/330067)
C ++ 11添加了一些标准的计时function(参见第20.11节“时间实用程序”),但准确性很高,但大多数编译器还不支持这些function。
大多数情况下,您需要使用OS API,例如POSIX的gettimeofday
。
对于代码的计时部分,请尝试std :: clock ,它返回ticks,然后除以CLOCKS_PER_SEC
。
libUTP(uTorrent传输协议库)有一个很好的例子 ,可以在不同平台上获取microtime。