像继承这样的 OOP 概念是否优化了应用程序的性能?
Does OOP concepts like inheritance optimize perfomance of an application?
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 层次结构更好地工作。
基本上没有。
与所有事情一样,你必须坚持一个很大的 IT 取决于几乎所有事情,但就执行性能而言,不,继承不会提高性能。
它可以提高整体代码密度,因为共享代码真正在子class之间共享,而不是重复。
在某些语言实现中,继承会降低性能。考虑在 subclass 上搜索方法的运行时。当它第一次查找该方法时,它发现该方法在 subclass 上不存在,然后必须在该方法的相应 superclass 上执行搜索。这些超级 class 搜索肯定会产生一些影响。
但这是一个实现细节。其他系统将在编译时而不是运行时支付该成本,因此没有实际性能成本。
因此,您可以看到它不一定是非黑即白的解决方案。
在编译语言中它不会提高性能,可能只是增加了编译时间。
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 层次结构更好地工作。
基本上没有。
与所有事情一样,你必须坚持一个很大的 IT 取决于几乎所有事情,但就执行性能而言,不,继承不会提高性能。
它可以提高整体代码密度,因为共享代码真正在子class之间共享,而不是重复。
在某些语言实现中,继承会降低性能。考虑在 subclass 上搜索方法的运行时。当它第一次查找该方法时,它发现该方法在 subclass 上不存在,然后必须在该方法的相应 superclass 上执行搜索。这些超级 class 搜索肯定会产生一些影响。
但这是一个实现细节。其他系统将在编译时而不是运行时支付该成本,因此没有实际性能成本。
因此,您可以看到它不一定是非黑即白的解决方案。
在编译语言中它不会提高性能,可能只是增加了编译时间。