2009-05-28 7 views
1

.NET 기술에서 수행되는 모든 응용 프로그램의 성능 분석 및 최적화에 어떤 기술을 사용해야합니까?
또한 강력한 디버깅/추적 기술을 알고 있습니까?
대규모 프로젝트에서 커스텀 디버깅/진단 클래스를 갖는 것이 필요하다고 생각하십니까?
응용 프로그램 프로파일 러 또는 타사 응용 프로그램의 사용을 권장합니까?.NET 디버깅 및 추적 성능 : 트릭/숨겨진 기능?

또 다른 관심사는 상당히 관련이 있습니다. 실행될 메소드에 걸리는 시간을 어떻게 얻을 수 있습니까?

답변

1

이것은 언어에 구애받지 않는 조언입니다. 기존 앱, 특히 더 큰 앱을 experience doing performance tuning 번 얻은 경우 내가 배운 것을 배울 수 있습니다. 가장 큰 성능 저하 요인은 오버 디자인입니다. 추상화, 알림 기반 처리 등의 레이어가 너무 많습니다. 문제는 당신의 인생을 더 쉽게 만들어야 할 작은 것들이 당신을 모른 채 큰 사이클 - 낭비로 빠지게 만듭니다.

1

이것은 시작이 고객에 대한 큰 우려가 NGEN 서비스를 사용하여, NGEN 서비스 사용을 고려하는 경우 그러나 여기에 몇 가지 가이드 라인 앱

  1. 측정 시작 시간 (NGEN입니다 :) 아주 일반적인 질문 .exe)는 콜드 시동시 상당한 성능을 가지고 있습니다.
  2. Workingset 및 GC 힙 : GC 힙은 어떤 모습입니까? 특별히 당신 LOH. CLR의 LOH가 압축되지 않으므로 LOH를 작게 유지하거나 캐싱 기술을 사용하여 LOH에서 오브젝트를 재사용하는 것이 중요합니다 (대형 오브젝트 힙은 85000 바이트보다 큰 오브젝트를 보유합니다).
  3. 처리량 : 그것은 그것과 관련하여 서버 응용 프로그램 .. 등

경우 처리 할 수있는 얼마나 많은 요청하는 사용자 인터페이스를 가지고 있다면 당신이 할 수있는 얼마나 많은 작업 앱에 대한 응답 시간 것입니다 진단 및 추적, TraceListner와 같은 System.Dignostics 네임 스페이스의 클래스를 사용할 수 있습니다. 중요한 코드 경로에 대한 ETW 이벤트도 고려할 수 있습니다 (MSDN의 이벤트 추적에는 좋은 참조 정보가 있습니다).

System.Dignostics 네임 스페이스의 기본 제공 클래스 위에 사용자 지정 dignostic 클래스를 만들 수 있습니다.

여러분이 가지고 있어야 할 매우 유용한 도구는 VS Profiler와 CLR 프로파일 러이며 각각 시간 프로파일 링과 메모리 프로파일 링입니다.

당신은 어떤 선택 방법에 대한, 또는 고해상도 타이밍의 시간을 측정하는 스톱워치 클래스를 사용할 수 있습니다, 뜨거운 기능에 대한 일반적인 높은 수준의 아이디어가 프로파일 러를 사용할 수 있습니다, 당신은 QueryPerformanceCounter에와 QueryPerformanceFrequency에 윈도우 API를

을 사용할 수 있습니다