这里的C++问题。我有一个系统,其中将有给定父类(super class)的数百个微型子类。它们都会有一个“foo”方法来执行某些操作。或者...我将使用一个带有一个称为“类型”的整数的类,并使用一个巨大的switch语句来决定我做foo时该怎么做。

在这里,性能是一个巨大的考虑因素。非常重要。

问题是,与使用vftable让C++进行转换相比,使用switch语句在性能上的好处/缺点是什么?如果我将其作为switch语句,则可以将常见的foo放在switch语句的顶部,将不太常见的foo放在底部,希望可以简化比较。试图通过vftable获得这样的效果必然会依赖于编译器,即使我能弄清楚该怎么做...

另一方面,如果没有这些难看的switch语句,我的代码将更容易处理。

最佳答案



正如您的问题所暗示的那样,通常将switch语句编译为jump table而不是if-else条件块。实际上,尽管测试您是否真的很在意,虚拟表和switch跳转表应该具有相似的性能。

关于c++ - vftable性能损失与switch语句,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4467485/

10-11 22:56
查看更多