【发布时间】:2016-09-23 11:57:17
【问题描述】:
我有一个用 C++ 编写的大项目。它可能有一些稳定性问题(即随机运行时),但我不确定。我知道由于操作系统多任务处理,执行时间(以挂钟时间衡量)可能因运行而不同。但我不知道,对于稳定程序来说,在具有相同输入的运行中,通过 cpu 时钟时间测量不同的执行时间是否正常。我尝试使用 time.h 中的clock(),并且
boost::chrono:::process_user_cpu_clock::now();
但在这两种情况下,我都会在图表上看到尖峰。我会给你一个这样的图表的例子。这里 Y 轴 - 执行时间,X 轴 - 相同程序在相同输入数据上的连续运行。红色图-挂钟时间,红色-cpu时钟时间,由clock()从time.h中获取
当然,我们假设我们的程序是稳定的,并且没有任何随机行为。那么,有可能吗?平台是 Windows 7。
【问题讨论】:
-
平台是什么? Linux
clock()是处理器时间,Windowsclock()AFAIK 是挂钟时间。 -
如果没有单位、标记轴、比例等,图表将毫无用处。例如,您真的担心微小的差异(例如毫秒)吗?
-
@sleeptightpupper y 轴以秒为单位。它在密钥中说。我只是假设 x 是每次运行。
-
十分之一秒是花生。操作系统开始做一些对它来说比运行代码更重要的事情可能会注入各种有趣的工件,这些工件会使你的速度降低超过 100 毫秒。建议通过一些真正的分析软件来运行你的程序。