C++ 为什么我的函数计时器总是给出零作为输出?
我的时间一直是零。我需要计算通过哈希表进行搜索的总时间和平均时间。有人能告诉我我做错了什么吗C++ 为什么我的函数计时器总是给出零作为输出?,c++,hash,runtime,clock,C++,Hash,Runtime,Clock,我的时间一直是零。我需要计算通过哈希表进行搜索的总时间和平均时间。有人能告诉我我做错了什么吗 void HashTable_chaining::SearchChainingHT(vector<string> QueryArray) { clock_t start, stop, time = 0; int i = 0; while(i != QueryArray.size()) { start = clock(); fin
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;
您希望将演员阵容改为:
此外,我不知道为什么要将它赋回时间,因为这是一个整数变量。如果希望以毫秒为单位,则可能需要将其显式化:
cout << "\nThe total time for Search Chaining was " << time << " (milliseconds)" << ...
编辑:
由于水平滚动,我最初忽略了这一点,但在打印行的末尾还有整数除法:
.. << "\nThe average time was " << time/QueryArray.size();
您可能还需要将该值转换为双倍。您正在进行整数除法:
(double)(time/CLOCKS_PER_SEC)*1000;
您希望将演员阵容改为:
此外,我不知道为什么要将它赋回时间,因为这是一个整数变量。如果希望以毫秒为单位,则可能需要将其显式化:
cout << "\nThe total time for Search Chaining was " << time << " (milliseconds)" << ...
编辑:
由于水平滚动,我最初忽略了这一点,但在打印行的末尾还有整数除法:
.. << "\nThe average time was " << time/QueryArray.size();
您可能想将该时钟设置为双倍。神秘回答了您的问题,但我建议您不要使用时钟。如果您的编译器支持C++11,那么有一个更好的选项,include
神秘回答了你的问题,但我建议你不要使用时钟。如果您的编译器支持C++11,那么有一个更好的选项,include
你的问题与非常相似,我的答案适用于这里,不要计算一个运算,而是一百万个运算。你的问题与非常相似,我的答案适用于这里,不要计算一个运算,而是一百万个运算。由于时间是在or中声明的标准函数,我不会给局部变量取相同的名称。在这种情况下,这可能无关紧要,但读者可能会感到困惑。因为时间是在或中声明的标准函数,所以我不会给局部变量起相同的名称。在这种情况下,这可能无关紧要,但读者可能会感到困惑。