为什么我的函数计时器一直给出零作为输出
Why do my function timers keep giving zero as output?
我的时间一直是零。我需要计算遍历哈希表的总时间和平均时间。有人能告诉我我做错了什么吗?
void HashTable_chaining::SearchChainingHT(vector<string> QueryArray)
{
clock_t start, stop, time = 0;
int i = 0;
while(i != QueryArray.size())
{
start = clock();
find(QueryArray[i]);
stop = clock();
time += stop - start;
i++;
}
time = (double)(time/CLOCKS_PER_SEC)*1000;
cout << "nThe total time for Search Chaining was " << time << "nThe average time was " << time/QueryArray.size();
}
你在做整数除法:
(double)(time/CLOCKS_PER_SEC)*1000;
您希望在()
内部进行强制转换:
((double)time/CLOCKS_PER_SEC)*1000;
此外,我不确定为什么你要把它分配回time
,因为这是一个整数变量。如果你想以毫秒为单位,你可能想让它显式:
cout << "nThe total time for Search Chaining was " << time << " (milliseconds)" << ...
编辑:我最初忽略了这一点(因为水平滚动),但是在打印行末尾这里也有整数除法:
.. << "nThe average time was " << time/QueryArray.size();
你可能也想把它转换成double
神秘的回答你的问题,但我想建议不要使用clock()
。如果你的编译器支持c++ 11,有一个更好的选择,#include <chrono>
。
#include <chrono>
void HashTable_chaining::SearchChainingHT(vector<string> QueryArray)
{
typedef std::chrono::steady_clock Clock;
Clock::duration total_time = Clock::duration::zero();
int i = 0;
while(i != QueryArray.size())
{
Clock::time_point start = Clock::now();
find(QueryArray[i]);
total_time += Clock::now() - start;
i++;
}
typedef std::chrono::duration<double,std::micro> microseconds;
typedef std::chrono::duration<double,std::nano> nanoseconds;
cout << "nThe total time for Search Chaining was " << microseconds(total_time).count() << " microseconds.n";
cout << "The average time was " << nanoseconds(total_time/(double)QueryArray.size()).count() << " nanoseconds.n";
}
你的问题和这个非常相似,我的答案也适用于这里(不计算一个操作,而是一百万个操作)
相关文章:
- 为什么我的代码在输出中增加了93天
- 在我的代码中,获得最大的Pair Wise产品C++和输出并不总是正确的
- 为什么我的C++程序的程序集输出充满了 .ascii,没有汇编代码?
- 为什么我的 if else 语句不起作用并从数组中输出正确的索引?
- 这是使用回溯的 nqueen 问题,但我使用了动态 2d 数组,我的程序编译良好,但不返回任何输出
- 我的输出中有一个额外的 0,为什么会这样
- 为什么我的 cout 在输出中没有显示字符串?
- 为什么即使使用 for 循环遍历我的向量,它也没有输出到控制台?(C++)
- 为什么我的输出与输入不同?(C++)
- 当使用我在一个函数、另一个函数中修改的数组时,在我的输出中得到一个奇怪的负数
- 为什么我的代码块上没有显示输出?
- "Program ended with exit code: 0"出现在我的输出的开头?
- gdb 中的列表命令不输出我编写的代码
- 我的代码中是否有任何类型的错误,因为它没有给出正确的输出
- 我的 cout 上有一个奇怪的输出,它把答案放在第一位,然后在我调用它的地方放一个奇怪的输出.我该怎么办?
- 我的求解(字符串 a、字符串 b)的输出与随机哈希中的预期输出不匹配
- fftw:为什么我的 2D DFT 输出与每行的 1D DFT 输出不同?
- 即使我的代码没有错误,我也没有得到正确的输出
- 为什么这一行不输出我的文本文件?
- 在任何情况下都会出现意外输出.我的解决方案出了什么问题