gpt4 book ai didi

c++ - 使用虚函数代替 IF 语句更快?

转载 作者:可可西里 更新时间:2023-11-01 18:29:44 29 4
gpt4 key购买 nike

我记得在某个地方在线阅读过,在极低延迟的情况下,最好使用虚函数代替 IF 语句。

这是真的吗?他们基本上是说动态多态性更适合速度情况吗?

是否有任何用户可以分享任何其他 C++ 低延迟“怪癖”?

最佳答案

我非常怀疑单个 if/else 语句会比使用虚函数慢:虚函数通常会强制执行管道停顿并限制优化机会。 if 语句可能会使流水线停止,但如果它经常被执行,则预测可能会以正确的方式进行。但是,如果您的选择是介于几个 if/else 语句的级联与仅一个虚函数调用之间,那么后者可能更快。此外,如果通过使用虚拟函数与分支执行的总代码是不同的函数,最终会小得多,这可能会导致指令缓存中的缓存未命中。也就是说,这取决于情况。最好的方法是测量。请注意,测量人工代码只是试图调查两种方法之间的差异,但实际上并未进行任何处理,因此会产生误导性的结果。然而,当您需要生成非常低延迟的代码时,您通常可以花更多时间来想出它,即尝试多种不同的方法可能是可行的。

虽然我的同事们倾向于不赞成我的避免运行时分支的模板方法,但我最终得到的代码通常编译起来很慢但运行起来很快。当然,这取决于编译时已知的函数或分支。在我使用过的领域,例如对于消息处理,通常有一个动态决策就足够了,例如每个消息一个(即一个虚函数调用),然后是不涉及任何动态类型的处理(这仍然是条件,例如表中值的数量)。

关于c++ - 使用虚函数代替 IF 语句更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8866703/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com