在PHP 5及更高版本中,什么更快 - interface
或abstract class
?
abstract class MyPluginModel {
VS
interface MyPluginModel {
他们如何比较内存和时间性能?
答案 0 :(得分:9)
仅根据性能来比较两者是没有意义的,因为它们不是一回事(“界面与抽象类”问题已在该网站上多次发布 - 参见例如{{3 }和here - ,所以我不打算重申这个论点。)
也就是说,接口很可能会更快,因为要做的事情较少(例如,没有必要将实例属性从超类复制到子类)。然而,在现实世界中,差异是不太可能被注意到的(如果您使用的是操作码缓存,那么就更不会注意到这一点了。在生产中你应该这样做。)
有关详细信息,请进行比较:here,zend_do_implement_interface
。
对于内存,不应有任何显着差异,接口和抽象类都使用zend_do_inheritance
。
答案 1 :(得分:4)
着名的一句话,“我们应该忘记效率低下,大约97%的时间说:过早的优化是所有邪恶的根源”,Donald Knuth。
考虑到这一点,我真的认为你做的是过早优化。
答案 2 :(得分:1)
接口和抽象类是不可比的。实际上不可能说抽象或接口类型将保留多少内存,因为它们只保存继承层次结构继承它们的任何具体对象的引用。