繁体   English   中英

在C ++中计算执行时间并始终为零

[英]calculating execution time in c++ and always getting zero

我在计算c ++中的执行时间时遇到麻烦,我同时使用了chrono和ctime库,但是每次我运行代码时,无论输入大小有多大,我都为零,这是我尝试的最后一次:

int main()
{  
LARGE_INTEGER freq,t1,t2;
double elapsedtime;
int s = 1000000;
QueryPerformanceFrequency(&freq);

int *arr = new int[s];
int random;

srand(time(NULL));
random = rand() % s;
for (int i = 0; i <s; i++)
    arr[i] = i;


QueryPerformanceFrequency(&t1);


cout << binarySearch(arr, 0, s-1,random)<<endl;

QueryPerformanceFrequency(&t2);

elapsedtime = (t2.QuadPart - t1.QuadPart)*100.0 / freq.QuadPart;

cout << "time :" <<elapsedtime<<endl;

  return 0;
 }

时间仍然是零。

QueryPerformanceFrequency

检索性能计数器的频率。 性能计数器的频率在系统启动时是固定的,并且在所有处理器之间均保持一致。

如果您两次调用该API,并减去返回值,则其求值为零。

要确定两个时间点之间的时间,您需要调用QueryPerformanceCounter

LARGE_INTEGER t1{ 0 };
::QueryPerformanceCounter(&t1);

// Code to measure

LARGE_INTEGER t2{ 0 };
::QueryPerformanceCounter(&t2);

auto elapsed_time_in_mu_s = (t2.QuadPart - t1.QuadPart) * 1000000 / freq.QuadPart;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM