特别是在java中。多态重构代码运行速度较慢。是否有可能多态性可能是罪魁祸首,或者可能存在与多态性无关的混杂性能流失。
答案 0 :(得分:8)
编写一些基准测试代码来执行每项操作,并衡量其性能。
其他任何事情都在猜测。
答案 1 :(得分:5)
理论上可能是因为JVM必须在运行代码之前加载类并创建其实例。如果/ else结构不需要加载其他类。但是,我从未见过真正的用例,因为应该通过失去设计质量来改善性能。
答案 2 :(得分:5)
是的,多态可能比if / else慢。这将取决于您的平台(Java)的内部。
但速度不是使用多态的原因。多态性用于使您的解决方案更易于阅读和理解 - 更易于维护。
如果速度是一个重要问题,那么牺牲可维护性而不使用多态就可以接受。
编辑:
正如许多评论和其他答案所指出的那样 - 不要盲目做出决定。首先衡量绩效影响。
答案 3 :(得分:1)
多态性较慢,有几个原因(例如动态方法查找)。正如上面的答案中所提到的,使用if / else而不是多态性并不是理由。 final
说明符有时会通过优化代码来帮助加速代码。