我可以让Qt分析信号槽的执行持续时间吗?

时间:2017-04-20 11:47:14

标签: c++ qt profiling signals-slots

我在Windows上有一个Qt控制台应用程序。我想对它进行分析,但QtCreator分析在Windows上不起作用。

我只使用了一些信号/插槽。应用程序是单线程的,每个连接都是Qt::QueuedConnection

Qt可以记录执行从事件循环中调用的每个插槽所花费的时间吗?它可以帮助我找到CPU瓶颈,而无需在程序中的任何地方手动添加定时器。

是否有可能覆盖插槽调用机制并测量被调用插槽执行时的时间?

1 个答案:

答案 0 :(得分:1)

排队的时段通话以QMetaCallEvent形式发送给接收方QObject。因此,您可以在QCoreApplication::notify传递这些事件时计时:从该方法中调用QObject::event

这有两个方面:

  1. 时间和数据收集 - 有关完整示例,请参阅this answer

  2. 解码QMetaCallEvent的内容以了解调用的方法 - 请参阅this question