C++ 计算哈希插入的运行时?

C++ 计算哈希插入的运行时?,c++,hash,runtime,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();

我需要计算散列插入的运行时间。我一直用时钟计时,但结果总是零。有没有最有效的方法

这是迄今为止我的代码:

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++;

    }   

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

 clock_t tstart = clock();
在您的程序开始时,进行百万次插入,以及

 clock_t tend = clock();
最后。然后以浮点计算:

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

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

 clock_t tstart = clock();
在您的程序开始时,进行百万次插入,以及

 clock_t tend = clock();
最后。然后以浮点计算:

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

cout我的第一个猜测是插入速度非常快,所以得到的是零。。。我永远不会做你在这个代码中尝试的事情。相反,我会做,比如说10000次插入,然后计算它需要多长时间,然后将这个数字除以10000,得到插入所需的平均时间。

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

运行10000/100000/1000000插入循环是可以的(您需要处理插入次数,直到得到一个永远不会运行的值为止)


如果您在Windows中工作,请考虑使用以获得更好的分辨率(参见内部代码)。p> 运行10000/100000/1000000插入循环是可以的(您需要调整插入次数,直到得到一个永远不会运行的值)


如果您在Windows中工作,请考虑使用以获得更好的分辨率(参见内部代码)。p> 除以

CLOCKS\u PER_second
不是100000。@user977154:这是将
clock()
的结果除以得到秒数的结果。在某些系统上是100000。在其他系统上,它不是。哦,它是预定义的,你还有其他建议吗?或者你认为我的时钟好吗?除以
CLOCKS\u PER_second
不是100000。@user977154:这是你除以
clock()
的结果得到的秒数。在某些系统上是100000。在其他系统上,它不是。哦,它是预定义的,你还有其他建议吗?或者你认为我的时钟好吗?但是这个解决方案不是跨平台的(它是WinAPI调用)。是的。OP没有说他是否需要跨平台。我猜他是在windows上工作。在linux上,
clock\u gettime
通常会提供更好的精度,而且直接访问性能计数器也有一些低级技巧。但是这个解决方案不是跨平台的(它是win api调用)。没错。OP没有说他是否需要跨平台。我猜他是在windows上工作。在linux上,
clock\u gettime
通常会提供更好的精度,而且直接访问性能计数器有一些低级技巧。