计算哈希插入的运行时间?

时间:2011-12-03 09:04:30

标签: c++ hash runtime

我需要计算哈希插入的运行时间。我一直在用时钟来做时间,但我一直都是零。有没有哪种方式最有效?

到目前为止,这是我的代码:

cout << "Testing chaining probing...\n";
    HashTable_chaining ChainingHT( ITEM_NOT_FOUND, 101 );
    int i = 0;
    while(i != DataArray.size())
    {
        clock_t tStart = clock();
        ChainingHT.insert(DataArray[i]);
        cout<<"Time taken:"<<(double)(clock() - tStart)/100000<<endl;
        if(i != NULL)
        {
            collision_count++;
        }
        i++;

    }   

3 个答案:

答案 0 :(得分:3)

单个哈希插入太快无法测量。放

 clock_t tstart = clock();

在您的计划开始时,执行百万次插入

 clock_t tend = clock();

最后。然后以浮点计算:

 cout << "cpu time=" 
      << ((double)tend - (double)tstart) / CLOCKS_PER_SEC << endl;

典型的当前计算机每秒执行几次数十亿次基本机器指令(但时钟分辨率最好以毫秒为单位)。

答案 1 :(得分:1)

我的第一个猜测是插入非常快,所以你得到了零...我永远不会在你的代码中尝试。相反,我会做10000次插入,然后计算需要多长时间,并将该数字除以10000以获得插入所需的平均时间。

答案 2 :(得分:0)

运行10000/100000/1000000插入循环是可以的(您需要使用插入次数,直到获得一个永远无法运行的值)。

如果您在Windows中工作,请考虑使用performance counters来获得更好的分辨率(请参阅内部代码)。