用时钟测量程序的运行时间

Measuring running time of program with clock

本文关键字:运行时间 程序 测量 时钟      更新时间:2023-10-16

我们正在研究各种排序算法的性能,并实现了我们的合并排序版本。我们试图用不同的输入来测量运行时间,但是当我们运行如下所示的main((程序时,我们得到了不同的时间结果。

例如,下面的 clock(( 函数输出可以在大输入下显示 30 秒,但是当我们使用手机使用实际计时器时,主程序大约需要 2 分钟。

我们在这里缺少什么?我们没有以正确的方式使用 clock(( 函数吗?为什么会有这么大的差异(1.5分钟(?

谢谢

int n;
cout << "Enter n - lenght of array" << endl;
cin >> n;
vector<int> v(n);
for(int i = 0; i < n; ++i)
{
v[i] = i;
}
auto rng = default_random_engine {};
std::shuffle(std::begin(v), std::end(v), rng);
clock_t begin = clock();
sort(v);
cout << "done";
clock_t end = clock();
cout <<"total time : " << (double)(end-begin) / CLOCKS_PER_SEC<<endl;
return 0;

我通过将sort函数替换为std::sort来运行您的代码,因为它显示11.744sn=5000000然后我将行移动到vector v声明之前clock_t begin = clock();,时间13.818s

因此,似乎内存分配,O(N(初始化和洗牌可能需要大量时间,并且如果您为n选择更大的数字,则取决于随机输入集的sort函数的效率,初始化可能需要比排序更多的时间。