2016-08-20 6 views
-1

나는 asp.net 응용 프로그램을 가지고 있으며 성능을 최적화하려고합니다. BitArray.Get 메서드 성능과 관련된 한 가지 문제가 있습니다. 실행 시간은 에서 100-250ms까지입니다.입니다. 그것은 너무나 도전적입니다. 이 메서드는 IEnumerable.FirstOrDefault 내부에서 호출됩니다. 왜 이런 일이 일어나고 어떻게 최적화 할 수 있을지 생각하고 있습니까?.net BitArray.Get 성능 문제

enter image description here

UPD

이 메서드 호출 EF 구체화 동안 나타납니다. 동일한 트레이스의 또 다른 예제 :enter image description here

또한 메서드 처리 시간이 1ms 인 다른 예제가 있습니다.

+0

이 트리에서 두 호출 모두 불가능합니다. 이 데이터의 출처는 어디입니까? – usr

+3

전체 애플리케이션 CPU 사용량의 0,01 %를 최적화하고 있습니까? 먼저 잡을 더 큰 물고기가 있어야합니다. –

+1

컨텍스트를 보는 것이 유용 할 것입니다. 귀하의 코드를 보여주십시오. 아마 누군가 그것을 최적화 할 수 있습니다. 252ms는 1,158,375 번 전화 할 시간인가요? –

답변

2

당신은 데이터를 잘못 해석하고 있습니다.

두 번째 사진 BitArray.Get()은 첫 번째 사진에 비해 약 3 배의 시간이 걸리고 통화 횟수는 약 3 배 정도 높습니다 (~ 1.2mio에 비해 ~ 3.1mio). 그러므로 나는 ms 단위의 시간이 단 한 번의 호출이 아니라 수백만 번의 호출을 반영한다고 결론을 내린다. 두 경우 모두 통화 당 시간은 통화 당 약 200ns (218 및 201 ns)입니다. 8.4 %의 차이가 있습니다. 이것은 꽤 일치합니다.

BitArray.Get()은 생각했던 것보다 ~ 1 마일 빠른 것입니다!