像继承这样的OOP概念是否可以优化应用程序的性能?

时间:2015-02-21 16:59:11

标签: performance oop

OOP是否只是组织代码(在维护,更新应用程序时让您的生活更轻松),还是组织和优化(性能,引擎盖下)?

例如:

public class Ferrari {
   ..speed;
   ..color;

   ..changeGear(){..change-gear-class-releated-stuff like 8 gears or something}
   ..turnLeft(){...}

同样如:

public class Ferrari extends Car {
   @Override
   ..changeGear(){
   super.changerGear();
   ..change-gear-class-releated-stuff like 8 gears or something
   }

public class Car{
   ..speed;
   ..color;

   ..changeGear(){...}
   ..turnLeft(){...}

为了表现?

3 个答案:

答案 0 :(得分:2)

在编译语言中,它不会提高性能,可能只是增加编译时间。

答案 1 :(得分:1)

由于继承,面向对象可能会阻止某些算法优化。两种算法可以很好地协同工作,但是如果它们隐藏在OO接口之后,那么使用它们的协同作用的可能性就会丢失。

看看数值库。他们中的很多人(不仅是60年代或70年代的人)都不是OOP。有一个原因 - 数值算法作为一组解耦模块比使用接口和封装的OO层次结构更好。

答案 2 :(得分:1)

基本上没有。

与所有事情一样,你必须在几乎所有事情上坚持一个大的IT部门,但就执行性能而言,不,继承并不能提高性能。

它可以改进的是整体代码密度,因为共享代码在子类之间真正共享,而不是重复。

在某些语言实现中,继承会降低性能。考虑运行时在子类上搜索方法。当它首次查找该方法时,它会发现该方法在子类上不存在,然后必须对该方法的相应超类执行搜索。那些超级搜索肯定会产生一些影响。

但这是一个实施细节。其他系统将在编译时支付该成本,而不是运行时,因此没有实际的性能成本。

所以,你可以看到它不一定是黑白解决方案。