0

为了在 qt 的一个插槽中映射多个自定义信号,我基本上有两个选择:QSignalMapper 或来自 senderID 指针的强制转换(参见:http ://doc.qt.digia.com/qq/qq10-signalmapper.html )。

我的问题是:哪个代码更高效?我想在程序的时间关键部分使用它。

我应该考虑使用单独的信号/插槽来优化代码吗?

先感谢您。

4

1 回答 1

0

您很可能对“时间关键”的含义以及您的应用程序实际上在哪里花费 CPU 时间是错误的。如果不实际测量事物,您就无法提出任何论据。在这一点上,我相信您正在进行微优化并浪费您的时间。不要做任何与优化相关的事情,除非您可以测量起点并看到实数的任何改进。

如果您的信号槽连接以每秒 1000 次的量级被调用,那么您几乎可以做任何您想做的事情 - 开销无关紧要。仅当您在 100k 调用/秒范围内才开始重要,然后您可能一开始就错误地构建事物。

没有任何参数的信号槽连接总是比发送一些参数的连接快。您可以使用动态属性系统简单地将属性添加到发送者对象,并使用sender()->property("..."). qobject_cast<...>(sender())动态属性查找比使用和调用自定义QObjectQWidget派生类上的成员函数需要更多时间。但这无关紧要,因为除非您可以测量差异,否则您无需担心。过早的优化确实是万恶之源。

于 2013-09-09T13:21:23.037 回答