【发布时间】:2020-05-28 23:12:02
【问题描述】:
我想测量将持续数天的过程的运行时间。这意味着执行过程将被多次中断,因为 Linux PC 将反复挂起待机。我不想在我的时间测量中包含这些睡眠阶段,所以我不能使用简单的时间戳。
除了每秒触发一个 QTimer 并计算这些超时之外,还有更好的方法来衡量程序的净运行时间吗?
【问题讨论】:
-
你可以看看
boost.timer-- 特别是boost::timer::auto_cpu_timer。 -
那是什么程序?它是应用程序、脚本还是函数?
-
@vahancho:由应用程序中的多个工作线程执行的计算。两种我都可以,一种测量所有线程的加起来时间的方法,或者一种测量线程处于活动状态的绝对时间的方法(不管有多少线程在工作)。
-
@Silicomancer,粗略地说,我会让每个线程在单独运行时计算时间。如果您使用
QTimer,只需每秒递增计数器,例如,在timeout()信号上。线程完成后,读取计数器(秒)值并将其存储。对所有线程重复此操作。换句话说,您不应该通过从结束时间减去开始时间来测量时间,而应仅在计时器处于活动状态时才计算时间。 -
@vahancho:好主意,但是当线程很忙时,它们不会监听事件并且不会进入事件循环。也许我可以改变这一点,但它本质上仍然会计算周期性事件,我希望会有一种更优雅的方式。