2016-07-13 1 views
2

우리는 프로덕션 웹 응용 프로그램 (ASP.NET MVC)을 가지고 있습니다. 이 응용 프로그램은 2 년 전에 개발되었으며 DI 컨테이너로 Ninject를 사용했습니다.Ninject에서 LightInject로 마이그레이션하는 동안 웹 응용 프로그램 성능이 크게 향상되지 않았습니다.

성능이 results 인 것을보고, 우리는 LightInject로 Ninject를 대체 할 동기를 얻었습니다. 우리는 다른 작은 웹 응용 프로그램에서 그렇게하기 전에 기술적 인 장애물이 없다고 확신했습니다.

별도의 코드 브랜치에서 Ninject를 변경하고 LightInject로 대체했습니다. LightInject를 DI 컨테이너로 사용하여 웹 응용 프로그램이 제대로 실행 중입니다.

이제 흥미로운 부분이 있습니다. 무엇을 얻었습니까?

그래서 나는 (과학적이지 않은) 빠른 성능 분석을 수행하려고 생각했습니다. 그래서 내 개발 상자에 Prefix (환상적인 도구)을 사용하고 수동으로 웹 앱의 두 버전을 모두 실행하는 타이밍을 캡처했습니다. 첫 페이지와 평균 시간을 무시하고 각 페이지를 10 번 실행합니다.

enter image description here

결과는 매우 고무적없는 나를 왜 궁금 만든? 측정 된 UI 페이지의

  1. 덜 수 :

    나는 이러한 결과에 대해 다음과 같은 가능성이있을 수 있습니다 생각합니다.

  2. 사용되는 성능 측정 기술은 수동적이며 과학적이지 않습니다.
  3. 웹 컨테이너에서 DI 컨테이너를 사용하는 방식은 Ninject 또는 LightInject를 사용할 지 여부가 중요하지 않습니다. 이 경우 교체로 교체하지 않으므로 전체 애플리케이션에 영향을 미칩니다. 이것을 확립하기 위해서는보다 과학적인 결과가 필요합니다.

서버에 접두어를 사용하는 것으로 생각했지만 AWS Elastic Beanstalk에서 호스팅합니다.

필자의 경우 LightInject로 전환 할 가치가 있는지 여부를 확인하기 위해 성능 매트릭스가 필요합니다.

이 문제에 대한 제안이 있으십니까?

답변

3

IoC 벤치 마크에서 볼 수있는 것과 동일한 성능 차이를 기대하지 않아야합니다. 웹 애플리케이션에서 그 이상이 계속되고 있기 때문에 그 차이가 무시할 만하다고 주장하는 것이 유혹적 일 수 있습니다. 그런 사고 방식은 미끄러운 경사 일 수 있습니다. 추가 된 모든 비용은 매우 빠르게 증가하는 총계의 작은 부분에 대해 점점 더 중요하게 고려됩니다. 밀리 초마다 계산됩니다. .NET 코어를위한 새로운 웹 서버 인 Kestrel을 살펴보면 처리량과 메모리 사용과 관련하여 최대 성능을 극대화하기위한 극단적 인 조치가 취해졌습니다. 메모리 할당 및 동시성 효율성 또한 측정해야하는 매우 중요한 요소입니다.

+0

감사합니다. 귀하의 요점을보고 이해합니다. 귀하의 진술은 서버 환경에서 호스팅되는 두 응용 프로그램의 성능을 비교하여 확인하고 싶은 제 3 번 질문을 지원합니다. – SBirthare

+0

당신이 맞습니다. 그러나 자원 사용은 중요합니다. 그러나 최종 사용자 관점에서 볼 때이 시점에서, 나는 주로 클라이언트 측에서 대기 시간 이후입니다. 그것이 전체 DI 컨테이너 성능 비교의 좋은 지표라고 가정하는 것이 잘못 되었습니까? – SBirthare

관련 문제