为了在qt中的一个时隙中映射多个自定义信号,我基本上有两个选项: QSignalMapper或来自senderID指针的强制转换(参见:http://doc.qt.digia.com/qq/qq10-signalmapper.html)。
我的问题是:哪个代码更有效?我想在我的程序的时间部分使用它。
我应该考虑使用独立的信号/插槽来优化代码吗?
提前谢谢你。
发布于 2013-09-09 13:21:23
关于“时间关键”意味着什么以及应用程序实际花费CPU时间的位置,您很可能错了。你不能在没有实际测量的情况下提出任何论点。在这一点上,我相信你是在优化和浪费你的时间。不要做任何与优化相关的事情,除非你能测量起点并看到实数的任何改进。
如果您的信号插槽连接是按每秒1000次的顺序调用的,那么您几乎可以做任何您想做的事情--开销并不重要。只有当您处于100 k调用/秒范围内时,它才会开始起作用,然后您可能一开始就错误地设计了一些东西。
没有任何参数的信号槽连接总是比发送某些参数的连接要快.您可以使用动态属性系统向发送方对象添加属性,并使用sender()->property("...")检查该属性。动态属性查找比使用qobject_cast<...>(sender())和调用自定义QObject或QWidget-derived类上的成员函数花费更多的时间。但这并不重要,因为除非你能测量出差异,否则你不需要担心它。过早的优化确实是万恶之源。
https://stackoverflow.com/questions/18694429
复制相似问题