2010-06-28 3 views
0

PHP 5 이상에서는 어떤 것이 더 빠릅니까? interface 또는 abstract class?PHP 추상 클래스 대 인터페이스 (성능)

interface MyPluginModel { 

가 메모리와 시간 성능면에서 비교 모든 아이디어를 어떻게 대

abstract class MyPluginModel { 

?

+3

당신은 이것을 원하지 않아야합니다. – zerkms

답변

1

인터페이스 및 추상 클래스는 성능 측면에서 비교할 수 없습니다. 상속 계층 구조를 상속받은 임의의 구체적인 객체에 대한 참조 만 보유하기 때문에 추상 또는 인터페이스 유형이 보유 할 메모리 양을 말하기 란 실제로 불가능합니다.

+0

"상속 계층 구조를 상속 한 구체적인 객체에 대한 참조 만 보유하기 때문에 추상 또는 인터페이스 유형이 보유 할 메모리 양"-이 문과 관련된 문제가 있습니다. 정의 자체는 많은 양의 데이터를 보유하고있는 객체를 제외하고는 아마도 어떤 객체보다 공간을 필요로합니다. – Artefacto

+0

네 말이 맞아. 그러나 인터페이스를 구현하거나 추상 형식에서 상속하는 각 유형마다 다릅니다. –

9

두 가지를 성능에 전적으로 비교하는 것은 의미가 없습니다. 동일한 것은 아니기 때문에 (인터페이스와 추상 클래스의 질문이이 사이트에 여러 번 게시되었습니다. 예 : here 참조) here - 그래서 논쟁을 반복하지 않을 것입니다.)

즉, 수행해야 할 일이 적기 때문에 인터페이스의 속도가 빨라질 수 있습니다 (예 : 수퍼 클래스에서 서브 클래스로 인스턴스 속성을 복사 할 필요가 없음). 그러나 현실에서는 차이점을 눈치 채지 못할 것입니다 (실제 운영 환경에서 사용해야하는 opcode 캐시를 사용하는 경우에는 눈치 채지 못할 수도 있습니다).

자세한 내용은 zend_do_implement_interface, zend_do_inheritance을 참조하십시오.

메모리에 대해서는 중요한 차이가 없어야하며 인터페이스와 추상 클래스 모두 same data structure을 사용합니다.

4

도널드 크 누스 (Donald Knuth)는 "조기 최적화는 모든 악의 근원입니다."라고 말하면서 "우리는 작은 효율성을 잊어야합니다.

정말 생각할 때 조기 최적화를 수행하고 있다고 생각합니다.

관련 문제