提问人:mrozo 提问时间:11/16/2023 最后编辑:mrozo 更新时间:11/16/2023 访问量:50
如何测量共享资源计算机上进程的实际执行时间
How to measure real execution time for a process on a shared-resource machine
问:
我正在研究优化算法,并且正在一台在多个用户(C++)上共享资源的机器上测试这些算法。
对我来说很重要的一件事是我的算法的执行时间。它应该工作一分钟,然后给我结果。但是,由于我并行运行多个实例,并且我不是唯一一个使用这些计算机的人,因此我不确定测量执行时间的方法。
我是什么意思? 假设我独自一人在机器上,我的算法在一分钟的实时时间内将进行 n 次迭代。问题是,当机器被其他用户超载时,它可能会影响结果,在同一个中,我们将给我 0.9n 次迭代。
如何测量实际执行时间?我的意思是,CPU 在我的进程上花费的实时时间?更重要的是,我如何测试这些条件下的措施是否有效?我正在检查睡眠或任务暂停是否会影响时间,但对于不同的编译器来说似乎有所不同。
我在 Ubuntu 和 Cygwin for Windows 上使用 g++ 和 mingw32-g++。但我们可以假设,我将转向两者的“正常”g++。
我尝试过 std::chrono::steady_clock、QueryPerformanceCounter(但它仅适用于 Windows)和 clock()。看起来最后一个应该可以解决问题,但我读到它不应该被使用。我的目标是0.5秒的精度,所以我不需要任何超精确的方法。
我希望你能帮助我,特别是我应该如何尝试模拟这种超载行为。
答: 暂无答案
评论
clock()
clock()
clock()
clock()