2011-03-15 4 views
13

몇 가지 최상위 .NET DI/IoC 컨테이너 here의 성능을 테스트하기위한 2008 년 벤치 마크 결과가 몇 가지 발견되었습니다. 하지만 업데이트 된 결과를 찾을 수 없었습니다. 큰 IoC 컨테이너 (StructureMap, Unity, Ninject, Autofac, Castle Windsor 등) 중 일부를 비교할 수있는 벤치 마크가 있습니까?DI/IoC 컨테이너 성능 벤치 마크 비교?

+0

나는 Reed에 동의합니다. 게다가, 벤치 마크는 잘못되기 쉽습니다. 이 스레드에서 인스턴스를 찾으십시오. http://stackoverflow.com/questions/5298240/hiro-vs-other-ioc-containers/5308894#5308894 – Steven

+1

이러한 새로운 벤치 마크가 그물에서 누락되었다는 사실, 나는 이것이 덜 관심의 대상이라는 진술로 받아들입니다. –

답변

44

성능 벤치 마크를 사용하여 IoC 컨테이너를 선택하지 않는 것이 좋습니다. 기능 세트, 개발 로드맵 및 유지 관리 가능성 등과 같은 많은 중요한 요소가 있습니다.

인용하는 벤치 마크는 최악의 경우 속도가 3-4x 차이 만 나타납니다. 1 백만 건의 전화. "현실 세계"시나리오에서 DI/IoC는 종속성을 연결하는 데 사용되며 전반적인 응용 프로그램 성능에 거의 영향을 미치지 않습니다.이 구성 단계는 전반적인 런타임의 상당 부분을 차지합니다. "고성능"대 "저 성능"IoC 컨테이너를 선택하면 응용 프로그램의 인식 성능에 눈에 띄는 영향을 미치지 않을 것입니다.

특정 사용 사례에서 성능이 정말로 중요하다는 시나리오에서는 IoC 컨테이너의 성능이 사용자에게 어떤 영향을 주는지 벤치마킹이 유효하지 않을 수 있습니다. 벤치 마크는 특정 문제에 대해 비뚤어지기 쉽습니다. 진정으로 이것이 심각한 문제라고 생각한다면 자신의 프로파일 링과 측정을하는 것이 좋습니다.

+6

고성능 IoC 컨테이너와 저 성능 IoC 컨테이너를 선택하면 응용 프로그램의 인식 성능에 큰 영향을 미칠 수 있습니다. 사용자가 인식 할 수있는 최소의 변경은 50ms이며 최상의 컨테이너와 최악의 컨테이너 간의 성능 차이가 있습니다 종종 50ms 이상입니다. 우리는 개인적으로 Ninject에서 DryIoC 2.1.3으로 옮겼습니다. –

+0

3-4x 차이점은 업데이트 된 벤치 마크가 표시하지 않는 항목입니다. 예를 들어, Ninject와 LightInject의 차이는 200x 이상이 될 수 있습니다. http://www.palmmedia.de/blog/2011/8/30/ioc-container-benchmark-performance-comparison – daniloquio

6

필자의 경우 IoC 컨테이너의 속도가 중요한 요소였습니다. 나는 많은 주입을 수행하는 응용 프로그램을 가지고 있었고 Ninject가 응용 프로그램을 상당히 느려지는 것을 발견했습니다. IoC를 사용하면 성능 문제를 완전히 해결할 수 있습니다. 나는 다른 해결책을 모색 할 것이다.

+0

IoC 컨테이너를 꺼내는 경우 성능 문제가 있다면 [Simple Injector] (https://simpleinjector.codeplex.com/)를 사용해보십시오. Simple Injector의 성능 오버 헤드는 [this benchmark] (http://www.palmmedia.de/blog/2011/8/30/)에서 볼 수 있듯이 손으로 새 오브젝트 그래프를 업 그레 이드하는 것과 비교해 볼 때 매우 적습니다. ioc- 컨테이너 벤치 마크 성능 비교). – Steven

+0

DryIoC 살펴보기 2.1.3 –

5

IoC Container Benchmark - Performance comparison 성능을 가지고 있으며, 20 개 이상의 제품에 대한 비교 테이블을 갖추고 있으며

기사에서 결론이 최신 (최신 업데이트 2017년 12월 21일)는 다음과 같습니다

은 특히 Simple Injector가 보인다 좋은 선택이되어야합니다. 매우 빠르며, 에는 좋은 문서가 있고 차단 및 제네릭 데코레이터와 같은 고급 시나리오도 지원됩니다.

관련 항목 https://stackoverflow.com/questions/1140730/net-di-containers-comparison/ 관련 질문

관련 문제