2011-02-14 2 views
6

여기에 약간의 수수께끼가 있습니다. 나는 특정 기능의 속도를 높이려고 노력했다. 이제는 내 응용 프로그램을 실행할 때이 기능을 실행하는 데 16-17 초가 걸린다.성능 분석을 실행할 때 코드가 왜 빨라지습니까?

VS2010에서 성능 분석과 함께 실행되는 성능 분석을 실행하면 느린 섹션을 찾기 위해 코드가 ~ 6-7 초 내에 실행됩니다. 자, 내 코드가 이렇게 빨리 실행 되었다면 응용 프로그램에서 완벽하게 수용 될 수 있습니다.

디버그 프로필과 릴리스 프로필을 통해 성능 분석없이 코드를 실행 해 보았습니다.

누구나 여기에 어떤 아이디어가있을 수 있습니까?

몇 가지 유의 사항 : 문제의 기능은 상당히 많은 LINQ to SQL을 사용하며 사용하는 성능 분석은 CPU 샘플링입니다.

+0

Heisenbug. 릴리스 모드 (디버그와 비교)로 컴파일하면 동일한 16-17 초가 소요됩니까? – Robaticus

+0

그리고 VS 밖에서 프로그램을 실행 했습니까? 디버거가 연결된 VS에서 프로그램을 실행하기 만하면 많은 지터 최적화가 비활성화됩니다. – CodesInChaos

+0

Robaticus, 예 (명시된대로). CodeInChaos - 나는 바깥 쪽과 안쪽의 VS 사이에 큰 차이가 있다는 것을 알았지 만, 나는 그것을 기대하고있었습니다. –

답변

4

코드의 가장 느린 부분에 초점을 맞추고 다른 부분보다 오래 걸리는 부분을 식별하면 절대 최적화해야한다고 생각합니다. 절대적인 지속 시간을 초 단위로 생각하지 않고 상대방을 생각하면됩니다.

전체 애플리케이션이 7 초 만에 실행 되더라도이 전체 시간 중 40 %를 차지하는 메소드가 있으면 성능 최적화를 사용하지 않고도이 미세 조정의 이점을 누릴 수 있으며 총 초기 실행 시간이 17 초 정도라면 실행 시간이 훨씬 더 많이 줄어 듭니다.

+0

+1, 왜 시간 차이를 연구하는 것보다 최적화에 더 많은 시간을 할애 할 수 있습니다. –

+0

그렇습니다.하지만 문제는 외부의 분석이 아니라 "내부적으로"최적화 된 문제였습니다. –

1

성능 분석이 아닌 경우 함수를 입력 할 때 많은 dll이로드되는 것을 보시겠습니까? 이 함수를 입력하면 dll이 많이로드되고, 성능 분석의 경우로드가 더 빨라 졌는지 궁금합니다.

+0

아니요 - 아니요 - 적어도 평범한 것은 아닙니다 –

+0

날짜 기록이있는 함수에 추적 문을 추가하고 속도가 느려지는 곳을 좁히려면 16-17 초가 어디인지, 시간은 이전에 기록했는지 확인하십시오 함수 호출, 그리고 오른쪽으로 입력 할 때, 당신의 성능 분석을 구식 방식으로 수행해야 할 것처럼 들리므로 지금은 자유로 워야합니다. –

+0

글쎄, 나는 그 문제를 찾아 내고 해결했다. 그러나 그 문제는 그와 같은 문제를 해결하는 방법보다는 "왜"문제가 발생 했는가를 목표로했다. –

관련 문제