C和C的Microtime()等价物++;? 我想知道在C 和 C++中是否存在PHP函数MimeTime[()的等价物。我环顾四周,但找不到确切的答案

C和C的Microtime()等价物++;? 我想知道在C 和 C++中是否存在PHP函数MimeTime[()的等价物。我环顾四周,但找不到确切的答案,c++,c,microtime,C++,C,Microtime,谢谢 在Linux上,您可以使用,它应该提供相同的信息。事实上,我相信这就是PHP暗中使用的函数。C++11添加了一些标准计时函数(请参阅第20.11节“时间实用程序”),精度很高,但大多数编译器还不支持这些函数 大多数情况下,您需要使用操作系统API,例如POSIX的gettimeofday。对于代码的计时部分,请尝试,它返回滴答声,然后除以时钟每秒,但在那一点上,你可能会碰到最大的代码限制双< /代码>,函数名可能会引起误解(这样一个函数的名称应该是nanotime()而不是microtim

谢谢

在Linux上,您可以使用,它应该提供相同的信息。事实上,我相信这就是PHP暗中使用的函数。

C++11添加了一些标准计时函数(请参阅第20.11节“时间实用程序”),精度很高,但大多数编译器还不支持这些函数


大多数情况下,您需要使用操作系统API,例如POSIX的gettimeofday。

对于代码的计时部分,请尝试,它返回滴答声,然后除以
时钟每秒
没有与PHP的microtime()完全等效的函数,但您可以基于以下代码使用具有类似功能的函数:

Mac OS X,可能还有Linux/Unix
(Darcara的回答来自:)

在c++11中,我相信与php的
microtime(true)
等价的是:

#include <chrono>
double microtime(){
    return (double(std::chrono::duration_cast<std::chrono::microseconds>(std::chrono::system_clock::now().time_since_epoch()).count()) / double(1000000));
}
#包括
双微时{
return(double(std::chrono::duration_cast(std::chrono::system_clock::now().time_since_epoch()).count())/double(1000000));
}
  • 但我不确定C等价物是什么,或者是否有(正如其他人指出的,gettimeofday是posix的一部分,但不是C/C++规范的一部分)

有趣的是,微秒是一百万分之一秒,但C++也支持纳秒,这是十亿分之一秒,我想你会得到更高的精度,用<代码> STD:::NoSo::NoSnims而不是<代码> STD:::Simo::微秒< /Cord>,但在那一点上,你可能会碰到最大的代码限制<代码>双< /代码>,函数名可能会引起误解(这样一个函数的名称应该是
nanotime()
而不是
microtime()
,并且返回值可能大于两倍),顺便说一句,我这里有一个php-functions-ported-to-c++集合:(microtime()就是其中之一)

我想这取决于平台:不一定在Windows上,但其他实现应该符合XSI(时钟每秒==1000000)。这也不是实时的,而是cpu时间。它也不是绝对时间戳(日历),只是经过的时间。它是
struct timeval timeWindows用户注意:您必须包含profileapi.h(#include)。事实上,我不同意,从C++11开始,您的答案可能是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);
#include <chrono>
double microtime(){
    return (double(std::chrono::duration_cast<std::chrono::microseconds>(std::chrono::system_clock::now().time_since_epoch()).count()) / double(1000000));
}