PHP抽象类vs接口(性能)

时间:2010-06-28 03:06:47

标签: php performance plugins

在PHP 5及更高版本中,什么更快 - interfaceabstract class

abstract class MyPluginModel {

VS

interface MyPluginModel {

他们如何比较内存和时间性能?

3 个答案:

答案 0 :(得分:9)

仅根据性能来比较两者是没有意义的,因为它们不是一回事(“界面与抽象类”问题已在该网站上多次发布 - 参见例如{{3 }和here - ,所以我不打算重申这个论点。)

也就是说,接口很可能会更快,因为要做的事情较少(例如,没有必要将实例属性从超类复制到子类)。然而,在现实世界中,差异是不太可能被注意到的(如果您使用的是操作码缓存,那么就更不会注意到这一点了。在生产中你应该这样做。)

有关详细信息,请进行比较:herezend_do_implement_interface

对于内存,不应有任何显着差异,接口和抽象类都使用zend_do_inheritance

答案 1 :(得分:4)

着名的一句话,“我们应该忘记效率低下,大约97%的时间说:过早的优化是所有邪恶的根源”,Donald Knuth。

考虑到这一点,我真的认为你做的是过早优化。

答案 2 :(得分:1)

从性能的角度来看,

接口和抽象类是不可比的。实际上不可能说抽象或接口类型将保留多少内存,因为它们只保存继承层次结构继承它们的任何具体对象的引用。