C++ QSignalMapper vs.grabbing senderId性能

C++ QSignalMapper vs.grabbing senderId性能,c++,qt,optimization,C++,Qt,Optimization,为了在qt的一个插槽中映射多个自定义信号,我基本上有两个选项:QSignalMapper或senderID指针的强制转换(请参阅:) 我的问题是:哪种代码更有效? 我想在我的程序中的时间关键部分使用它 我应该考虑使用分离的信号/时隙来优化代码吗?< /P> 提前感谢。关于“时间关键型”的含义以及应用程序实际在哪里花费CPU时间,您很可能是错的。在没有实际测量的情况下,你不能提出任何论点。在这一点上,我相信你是在微观优化和浪费时间。不要做任何与优化相关的事情,除非你能测量起点并看到实数的任何改进

为了在qt的一个插槽中映射多个自定义信号,我基本上有两个选项:QSignalMapper或senderID指针的强制转换(请参阅:)

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

我应该考虑使用分离的信号/时隙来优化代码吗?< /P>


提前感谢。

关于“时间关键型”的含义以及应用程序实际在哪里花费CPU时间,您很可能是错的。在没有实际测量的情况下,你不能提出任何论点。在这一点上,我相信你是在微观优化和浪费时间。不要做任何与优化相关的事情,除非你能测量起点并看到实数的任何改进

如果您的信号插槽连接以每秒1000次的顺序被调用,您可以做任何您想做的事情-开销无关紧要。只有当你在每秒10万次的调用范围内时,这才开始起作用,然后可能你一开始就错误地设计了一些东西


没有任何参数的信号插槽连接总是比发送某些参数的插槽连接更快。您只需使用动态属性系统向发送者对象添加属性,并使用
sender()->property(“…”
检查该属性即可。动态属性查找比使用
qobject\u cast(sender())
和对自定义
qobject
QWidget
派生类上的成员函数的调用要花费更多的时间。但这是无关紧要的,因为除非你能测量差异,否则你不需要担心。过早优化确实是万恶之源。

你是对的:我对这类问题的回答也是:“除非你真的有问题,并且明确知道这是原因,否则不要优化。”。然而,我只是想知道是否有一个简单的答案存在于信号映射器或senderId的实现中,这是非常昂贵的(使用RTTI和查找表或类似的东西),这应该在经常调用的(>1000 per scond)代码中避免。但是谢谢你给我的提示,如果有问题,我可以测试它的属性。在那之前,我将继续与qsignalmapper和qobject_的演员阵容合作,这似乎很有效。