【发布时间】:2015-02-26 13:34:40
【问题描述】:
我想计算一个非常小的函数的执行时间来比较递归函数和迭代函数的执行时间。
当然,clock() 在分辨率不够的情况下根本无法做到这一点。你能告诉我如何使用其他时间源,如GetThreadTimes()。我在微软网站上看到了一个描述,但是没看懂原理。
另外,<chrono> 标头在 MS Visual 10 中也不起作用。
代码:
int search (int a[], int size, int& num) {
if (size >0) {
if (a[size-1] == 17) {num = size-1; return num;}
else {return search (a, --size, num);}}
else {return num=-1;};
}
int searchit (int a[], int size, int& num) {
for (int i =0; i< size; i++) {
if (a[i] == 17) {num = i;}
else num = -1;
}
return num;}
int main () {
srand ((unsigned int) time(0));
int num = 0;
const int size = 40;
int a[size];
for (int i =0; i< size; i++) {
a[i] = rand()%100;
cout << a[i] << endl;}
cout << '\n';
search (a, size, num);
cout << num << endl;
cin.get();
cin.ignore();
}
【问题讨论】:
-
您想要从毫秒到多深的分辨率?
-
尝试多次执行 GetTickCount
-
你确定你没有过早地进行微优化吗?
-
执行一个完整函数所花费的时间stackoverflow.com/a/40380118/6180077