Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance 像继承这样的OOP概念是否优化了应用程序的性能?_Performance_Oop - Fatal编程技术网

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

Performance 像继承这样的OOP概念是否优化了应用程序的性能?,performance,oop,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 { @Ove

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(){...}

为了性能?

由于继承,面向对象可能会阻止某些算法优化。这两种算法可能在一起工作得特别好,但如果它们隐藏在OO接口后面,那么就失去了使用它们协同作用的可能性

看看数字图书馆。其中很多(不仅仅是60年代或70年代写的)都不是OOP。这是有原因的——数值算法作为一组解耦的模块比作为带有接口和封装的OO层次结构工作得更好。

基本上,不是

与所有事情一样,您必须坚持一个很大的原则,这几乎取决于所有事情,但就执行性能而言,不,继承并不能提高性能

它可以提高的是总体代码密度,因为共享代码在子类之间是真正共享的,而不是重复的

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

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


因此,您可以看到,它不一定是黑白解决方案。

在编译语言中,它并没有提高性能,可能只是增加了编译时间。

这很悲哀……因为尽管一个程序员有很好的OOP技能,但这并不能将他与在最终用户方面具有普通OOP技能的程序员区分开来(“客户”,应用程序的用户)…最终用户只关心功能和性能,而不关心代码组织..谢谢,我明白了:)一切都是相对的;)性能优化是一个许多程序员都非常无知的主题,他们有各种奇怪的误解。学习它的方法是实际做一些性能调整,然后