2009-07-03 6 views
1

닌자와 같은 IOC 라이브러리를 사용하는 경우 성능 저하가 있습니까? 아니면 대부분 application_start 중에 한 번 치는 것입니까?IOC (asp.net mvc)에는 어떤 종류의 성능 비용이 있습니까?

+0

Ninject를 의미합니까? –

+2

닌자는 비열하고 당신이 그것을 깨닫지 못해도 당신의 물건을 묶을 것입니다. 또한, 그들은 항상 싸운다. –

답변

8

성능에 문제가 있습니까? 당신이 만나는 특별한 목표를 가지고 있습니까? 프로파일 러를 사용하여 IoC 프레임 워크 사용에 따른 성능 문제를 추적 했습니까?

이러한 질문에 대한 대답이 "아니오"이면 진짜 대답은 "중요하지 않습니다"입니다. 그들 모두에게 대답이 "예"라면, 당신은 이미 그 해답을 알고 있습니다.

하지만 물론 IoC 프레임 워크를 사용하는 데 성능 비용이 있습니다. new을 사용하면 명령어가 하나 인 반면 IoC는 그보다 많기 때문에 약간의 비용이 들게됩니다. 귀하의 신청서에 중요합니까? 아마도 그렇지 않습니다. 당신은 한 쪽 끝에 인터넷을 가지고 있고 다른쪽에는 아마도 데이터베이스가있을 것이며 그 사이의 내부 네트워크가있을 가능성이 높습니다. 컴파일 된 코드는 웹 응용 프로그램의 병목 현상이 거의 없습니다.

1

사용 방법에 따라 다르지만 한 번에 수천 개의 객체를 인스턴스화하지 않으면 눈에 띄는 병목 현상이 없어야합니다.

개체가 IoC 컨테이너에서 해결되면 일반적으로 컨테이너는 리플렉션을 사용하여 해당 클래스의 생성자와 공용 속성을 검색 한 다음 내부 컬렉션을 반복하여 개체에 필요한 각 서비스에 가장 잘 맞는 항목을 찾습니다. 인스턴스화는 수동으로 인스턴스화하는 경우와 리플렉션 호출에 약간의 시간이 소요되는 한 오래 걸릴 것입니다.

일시적인 라이프 스타일을 사용하고 루프 내에서 개체를 해결하는 경우 약간의 성능 저하가 발생할 수 있지만 그 시점에서 해당 코드를 실행하는 더 좋은 방법이 있는지 물어볼 수 있습니다.

아직 성능에 문제가 없다면, 문제가되지 않아도됩니다. Don't optimize until you absolutely have to.

0

체크 아웃 Munq.DI. Funq에서 영감을받은 간단하고 빠른 IOC입니다. 람다 식을 사용하여 생성 방법을 정의하고 컨테이너, 캐시, 세션, 요청 및 AlwaysNew 수명 관리자를 지원합니다.

샘플 응용 프로그램에는 ASP.NET MVC와의 통합이 포함됩니다.

관련 문제