2013-02-09 4 views
9

성능을 향상시키기 위해 (엔터프라이즈 웹 응용 프로그램의 성능을 전반적으로 향상시키기 위해) JavaScript 인코딩 기능을 최적화하려고 시도했습니다. . 우리는 .NET HttpUtility.JavaScriptStringEncode을 사용하려고 시도했지만 데이터 계층이 예상하는 방식을 인코딩하지 않으며 데이터 계층을 변경하는 것이 테이블에 없습니다..NET 메서드 (.dll)와 반영된 버전 간의 성능 차이

RedGate 프로파일 러 도구를 사용하여 가장 좋은 성능은 전체 페이지로드의 약 8 %입니다. .NET 기능을 사용할 때 (허용하는 페이지에서) 전체 페이지로드의 약 0.08 %를 차지합니다. 우리는 .NET 함수를 반영하여 그들이 작업하고있는 술어와 함수에 반영된 코드를 복사하여 직접 실행 한 것을 확인했습니다. 약 10 % 정도 수행했습니다.

이유에 대해 궁금합니다. 이러한 성능 향상을 위해 .NET 기능을 다르게 준비하는 방법은 무엇입니까?

미리 사과 드리지만 사용중인 기능을 붙여 넣을 수는 없지만 그 질문에 영향을 미쳐야한다고 생각하지 않습니다.

+1

흥미 롭습니다. 단지 동일한 PC 및 페이지에서 릴리스 모드로 이러한 벤치 마크를 실행 했습니까? JIT가 벤치마킹하기 전에 JIT가 모든 코드를 생성했는지 확인하기 위해 동일한 실행에서 여러 번 테스트를 실행 했습니까? – Cameron

+1

실제 런타임 변경 또는 전체 페이지로드의 일부만 변경 했습니까? 아마도 페이지가 더 복잡하고 총 페이지가 더 느립니다. –

+0

ServiceStack 시리얼 라이저 (NuGet을 통해 사용 가능)를 사용해 보겠습니다. 그것은 빠르지 만 여전히 합리적으로 유연합니다. 성능 측정과 관련하여 코드를 단위 테스트 또는 이와 유사한 방식으로 분리하여 반복적 인 반복 작업을 수행하고 다양한 방법을 쉽게 비교할 수 있도록하십시오. IIS를 통해 실행되는 벤치마킹 코드는 다른 많은 요인으로 인해 결과가 왜곡 될 수 있으므로 일반적으로 적합하지 않습니다. .NET과 함께 제공되는 dll의 패키지는 일반적으로 미리 컴파일되어 있으므로 런타임에 JIT 될 필요가 없습니다. –

답변

1

반사 된 코드를 라이브러리에 붙여 넣은 후에 생성 된 IL 코드를 .NET 라이브러리에있는 IL 코드와 비교할 수 있습니까? 컴파일하는 데 사용되는 컴파일러 스위치로 인해 이러한 차이가 발생할 수 있습니다.