测量Windows C+的时间(毫秒或微秒)+; 如何在Windows C++中?

测量Windows C+的时间(毫秒或微秒)+; 如何在Windows C++中?,c++,windows,time,measure,C++,Windows,Time,Measure,我发现许多方法一调用时间(NULL),但它只以秒为单位测量时间,秒时钟()测量CPU时间,而不是实际时间 我发现本文中提到的函数gettimeofday(日历时间): dropbox.com/s/k0zv8pck7ydbakz/1_7-PDF_thesis_2.PDF 此函数适用于Linux(以毫秒和微秒为单位的计算时间),而不是Windows 我为Windows找到了一个替代方案: dropbox.com/s/ofo99b166l7e2gf/gettimeofday.txt 这可能是相关的:S

我发现许多方法一调用时间(NULL),但它只以秒为单位测量时间,秒时钟()测量CPU时间,而不是实际时间

我发现本文中提到的函数gettimeofday(日历时间): dropbox.com/s/k0zv8pck7ydbakz/1_7-PDF_thesis_2.PDF

此函数适用于Linux(以毫秒和微秒为单位的计算时间),而不是Windows

我为Windows找到了一个替代方案: dropbox.com/s/ofo99b166l7e2gf/gettimeofday.txt


这可能是相关的:StActPox.com /问题/ 1861294 /计算-执行-时间-代码段-c

< p>您正在寻找和相关函数。

< p>可以使用标准C++:

#包括
#包括
//长时间运行
长fib(长n){
if(n<2){
返回n;
}否则{
返回fib(n-1)+fib(n-2);
}
}
int main(){
自动启动时间=标准::时钟::高分辨率时钟::现在();
长输入=32;
长结果=fib(输入);
自动结束时间=标准::时钟::高分辨率时钟::现在();
自动时间=结束时间-开始时间;

std::cout您需要使用QPC/QPF API来计算执行时间。在调用之间调用您想要的代码,然后将其从周期转换为微秒

LARGE_INTEGER nStartTime;
LARGE_INTEGER nStopTime;
LARGE_INTEGER nElapsed;
LARGE_INTEGER nFrequency;

::QueryPerformanceFrequency(&nFrequency); 
::QueryPerformanceCounter(&nStartTime);

    SomethingToBeTimed();

::QueryPerformanceCounter(&nStopTime);
nElapsed.QuadPart = (nStopTime.QuadPart - nStartTime.QuadPart) * 1000000;
nElapsed.QuadPart /= nFrequency.QuadPart;
参考资料:

你使用C++有CLR支持吗?还是Win32?这个问题没有对这个问题的一般理解。我认为这个问题不是很好,但是它是可恢复的。+ 1是为了公平,有人能帮助编辑吗?请注意,在代码的版本中,有一个bug,用VisualStudio。请参见。
QueryPerformanceCounter
是在Win32下获取高分辨率计时的一种方法。我可以确认VS 2015现在对
high\u resolution\u clock
使用
QueryPerformanceCounter
(对于所有时钟,较旧的VS版本刚刚使用
GetSystemTime
)。fib()中的return语句缺少分号
LARGE_INTEGER nStartTime;
LARGE_INTEGER nStopTime;
LARGE_INTEGER nElapsed;
LARGE_INTEGER nFrequency;

::QueryPerformanceFrequency(&nFrequency); 
::QueryPerformanceCounter(&nStartTime);

    SomethingToBeTimed();

::QueryPerformanceCounter(&nStopTime);
nElapsed.QuadPart = (nStopTime.QuadPart - nStartTime.QuadPart) * 1000000;
nElapsed.QuadPart /= nFrequency.QuadPart;