[英]PHP abstract class vs interface (performance)
在PHP 5和更高版本中, interface
或abstract class
的速度更快?
abstract class MyPluginModel {
与
interface MyPluginModel {
有什么想法在内存和时间性能方面进行比较吗?
仅基于性能来比较这两者是没有意义的,因为它们不是同一件事(“接口与抽象类”问题已在此站点上发布多次,请参见此处和此处 ,例如,因此我将不重申该论点)。
也就是说,由于要做的事情更少(例如,没有必要将实例属性从超类复制到子类),所以接口很可能会更快。 但是,在现实世界中,这种差异几乎不可能被注意到(甚至比在生产中应该使用的操作码缓存的情况要小得多)。
有关更多信息,请比较: zend_do_implement_interface
, zend_do_inheritance
。
至于内存,应该没有太大的区别,接口和抽象类都使用相同的数据结构 。
唐纳德·克努斯(Donald Knuth)的名言:“我们应该忘记效率低下,大约97%的时间:过早的优化是万恶之源”。
我真的认为您在考虑时就在进行过早的优化。
从性能的角度来看,接口和抽象类是不可比的。 确实不能说抽象或接口类型将保留多少内存,因为它们都只保留对继承层次结构继承的任何具体对象的引用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.