多态有时比if / else慢吗?

时间:2010-11-13 19:23:09

标签: java polymorphism

特别是在java中。多态重构代码运行速度较慢。是否有可能多态性可能是罪魁祸首,或者可能存在与多态性无关的混杂性能流失。

4 个答案:

答案 0 :(得分:8)

编写一些基准测试代码来执行每项操作,并衡量其性能。

其他任何事情都在猜测。

答案 1 :(得分:5)

理论上可能是因为JVM必须在运行代码之前加载类并创建其实例。如果/ else结构不需要加载其他类。但是,我从未见过真正的用例,因为应该通过失去设计质量来改善性能。

答案 2 :(得分:5)

是的,多态可能比if / else慢。这将取决于您的平台(Java)的内部。

但速度不是使用多态的原因。多态性用于使您的解决方案更易于阅读和理解 - 更易于维护。

如果速度是一个重要问题,那么牺牲可维护性而不使用多态就可以接受。

编辑:

正如许多评论和其他答案所指出的那样 - 不要盲目做出决定。首先衡量绩效影响。

答案 3 :(得分:1)

多态性较慢,有几个原因(例如动态方法查找)。正如上面的答案中所提到的,使用if / else而不是多态性并不是理由。 final说明符有时会通过优化代码来帮助加速代码。