같이하여 인터페이스에 의한 성능 저하가된다
1)베이스 클래스 참조
성능면에서 더 참조
abstract class BaseClass{}
class A : BaseClass{}
class B : BaseClass{}
static void Main(){
BaseClass objectInstance = new A();
objectInstance = new B();
}
또는
2 통해 객체 참조.) 인터페이스 참조를 통한 객체 참조 :
interface IBase{}
class A : IBase{}
class B : IBase{}
static void Main(){
IBase objectInstance = new A();
objectInstance = new B();
}
이것은 당신 자신을 시험하기 쉽습니다. 간단한 질문을 실행하는 것보다이 질문을 올바르게 작성하고 형식을 지정하는 데 더 많은 시간이 걸렸을 것입니다. –
[어느 쪽이 더 빠릅니까?] (https://ericlippert.com/2012/12/17/performance-rant/) –
이 코드에는 아무런 영향이 없습니다. 중요한 것은 다음에 수행하는 작업입니다. 인터페이스 메소드 호출에는 약간의 오버 헤드가 있습니다. 호출 스텁을 통과해야하며 지터 최적화 프로그램은 메소드를 인라인 할 수 없습니다. 퍼프 차이는 정확하게 측정하기가 어렵고, 비 인터페이스 방식을 완전히 사라지게함으로써 벤치 마크를 엉망으로 만드는 것은 매우 빠르며 코드가 매우 쉽습니다. 인터페이스는 구조적인 디자인 패턴입니다. 여러분은 그것들에 동의하지도 않고 임의로 던져 버릴 수도 없습니다. 매우 무겁게 CLR에 의해 마이크로 최적화 된 그들은 빨지 않습니다. –