【问题标题】:Measure actual runtime of a procedure using Qt使用 Qt 测量过程的实际运行时间
【发布时间】:2020-05-28 23:12:02
【问题描述】:

我想测量将持续数天的过程的运行时间。这意味着执行过程将被多次中断,因为 Linux PC 将反复挂起待机。我不想在我的时间测量中包含这些睡眠阶段,所以我不能使用简单的时间戳。

除了每秒触发一个 QTimer 并计算这些超时之外,还有更好的方法来衡量程序的净运行时间吗?

【问题讨论】:

  • 你可以看看boost.timer -- 特别是boost::timer::auto_cpu_timer
  • 那是什么程序?它是应用程序、脚本还是函数?
  • @vahancho:由应用程序中的多个工作线程执行的计算。两种我都可以,一种测量所有线程的加起来时间的方法,或者一种测量线程处于活动状态的绝对时间的方法(不管有多少线程在工作)。
  • @Silicomancer,粗略地说,我会让每个线程在单独运行时计算时间。如果您使用QTimer,只需每秒递增计数器,例如,在timeout() 信号上。线程完成后,读取计数器(秒)值并将其存储。对所有线程重复此操作。换句话说,您不应该通过从结束时间减去开始时间来测量时间,而应仅在计时器处于活动状态时才计算时间。
  • @vahancho:好主意,但是当线程很忙时,它们不会监听事件并且不会进入事件循环。也许我可以改变这一点,但它本质上仍然会计算周期性事件,我希望会有一种更优雅的方式。

标签: c++ qt runtime standby


【解决方案1】:

作为 G.M.建议,我用boost::timer::cpu_timer时间来解决我的问题。它返回汇总的计算时间和整个过程的运行时间,这对我的目的来说很好。 Boost 不是 Qt,但无论如何它是跨平台的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多