我想要测量我的应用程序中哪些事件在主线程(阻止GUI)中执行需要很长时间,或者至少是否有任何事件需要超过10毫秒。我显然使用线程和并发处理需要很长时间的任务,但有时很难区分哪些任务应该放在其他线程中,哪些任务可以留在GUI中。特别是在运行于多个操作系统和新旧硬件上的应用程序中。
我查看了QApplication(和QCoreApplication),但它没有任何“processSingleEvent”类似的功能,我可以轻松地覆盖并包装时间测量。事件过滤器也无法解决问题,因为据我所知,在事件被处理后,没有办法得到通知。
我认为我可以手动调用QApplication :: processEvents(而不必调用exec),但它仍然不能提供单个事件粒度,并且根据我所读的,它不能处理销毁事件。
我查看了QCoreApplication :: exec实现,并看到它在内部使用QEventLoop,因此如果我想将我的特殊代码添加到原始实现中,我必须重新实现QApplication和QEventLoop,并从Qt源代码中复制大量代码...
编辑:问题显然是:如何以可能简单而“干净”的方式测量事件处理时间?
我查看了QApplication(和QCoreApplication),但它没有任何“processSingleEvent”类似的功能,我可以轻松地覆盖并包装时间测量。事件过滤器也无法解决问题,因为据我所知,在事件被处理后,没有办法得到通知。
我认为我可以手动调用QApplication :: processEvents(而不必调用exec),但它仍然不能提供单个事件粒度,并且根据我所读的,它不能处理销毁事件。
我查看了QCoreApplication :: exec实现,并看到它在内部使用QEventLoop,因此如果我想将我的特殊代码添加到原始实现中,我必须重新实现QApplication和QEventLoop,并从Qt源代码中复制大量代码...
编辑:问题显然是:如何以可能简单而“干净”的方式测量事件处理时间?