【发布时间】:2013-02-01 18:26:13
【问题描述】:
我正在计时执行三种不同类型的搜索(顺序、递归二进制和迭代二进制)需要多长时间。我有这些,它确实会迭代并完成搜索。我的问题是,当我对它们全部计时时,我每次都得到 0,即使我制作了一个 100,000 的数组,并且我让它搜索不在数组中的东西。如果我在搜索中设置一个断点,它显然会使时间变长,并且它给了我一个可以使用的合理时间。但否则它总是 0。这是我的代码,所有三个搜索计时器都是相似的。
clock_t recStart = clock();
mySearch.recursiveSearch(SEARCH_INT);
clock_t recEnd = clock();
clock_t recDiff = recEnd - recStart;
double recClockTime = (double)recDiff/(double)CLOCKS_PER_SEC;
cout << recClockTime << endl;
cout << CLOCKS_PER_SEC << endl;
cout << recClockTime << endl;
对于最后两个,我得到 1000 和 0。
我在这里做错了吗?还是在我的搜索对象中?
【问题讨论】:
-
自从我找到了 boost 的
auto_cpu_timer,我就再也没有回头。它会为您处理所有这些事情。实例化计时器,让它超出范围,瞧。 -
循环运行搜索(例如,一百万次)。然后,将您记录的时间除以迭代次数,得到单次搜索调用的时间。
-
您通过添加 roughly 提出了观点,但我认为 roughly 应该是 0.2 秒,
clock()在这里似乎可以正常工作。 -
是的,这就是我猜它需要的值,只有 0.2,但我得到了零,即使我确实将它设置为搜索 1,000,000 次迭代。这段代码看起来还好吗?我的问题出在其他地方吗?
-
@KKendall:将您的代码与:ideone.com/CXajTQ进行比较