用时钟测量程序的运行时间
Measuring running time of program with clock
我们正在研究各种排序算法的性能,并实现了我们的合并排序版本。我们试图用不同的输入来测量运行时间,但是当我们运行如下所示的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.744s
n=5000000
然后我将行移动到vector v
声明之前clock_t begin = clock();
,时间13.818s
因此,似乎内存分配,O(N(初始化和洗牌可能需要大量时间,并且如果您为n
选择更大的数字,则取决于随机输入集的sort
函数的效率,初始化可能需要比排序更多的时间。
相关文章:
- 用时钟测量程序的运行时间
- 我的 c++ 应用程序中的运行时间从 0 增加到 60 太快了(例如一毫秒或一微秒)
- 如何执行用 C++ 编写的程序的运行时间?
- 如何优化C++键值程序以获得更快的运行时间
- 同一程序的运行时间差异很大,有时达到1000+us
- 测量 OpenCL 应用程序的运行时间
- 如何修复数据库连接的C 程序运行时间错误(0xc0000005)
- 如何在以下C程序中计算运行时间内存和最大数据存储器使用情况
- 使用Clock()函数测量程序的运行时间
- 对于长时间运行的程序,STL 内存管理是否"reliable"?
- 测量 C++ 多线程程序中的运行时间
- 运行时间错误:程序跳过提示,以获取第二名和第三个名称
- 将一个大文件加载到内存中并在程序的所有运行时间内保持它是错误的
- 如果你以root用户身份运行这个C++程序,为什么它要花这么长时间才能完成
- 为什么我的C++程序使用的系统时间比运行时间多
- 与linux相比,cygwin中的c++程序运行时间较长
- 如何分析程序运行时间
- 计算并行程序的运行时间和cpu时间
- 如何为长时间运行的程序执行文件输出
- 使用 Unix 程序时间计算每次迭代的程序运行时间