Programming

좋은 .NET 프로파일 러 란 무엇입니까?

procodes 2020. 2. 26. 22:44
반응형

좋은 .NET 프로파일 러 란 무엇입니까?


.net 프로그램으로 작업 할 때 어떤 프로파일 러를 사용 했습니까?


내가 사용하고 JetBrains의 dotTrace레드 게이트 ANTS을 광범위하게. 기능과 가격이 상당히 비슷합니다. 둘 다 유용한 성능 프로파일 링과 매우 기본적인 메모리 프로파일 링을 제공합니다.

dotTrace는 Resharper와 통합되어 IDE에서 한 번의 클릭으로 단위 테스트의 성능을 프로파일 링 할 수있어 매우 편리합니다. 그러나 dotTrace는 종종 가짜 결과를내는 것처럼 보입니다 (예 : 방법을 실행하는 데 몇 년이 걸린다고 말함)

ANTS가 프로파일 링 결과를 제시하는 방식을 선호합니다. 소스 코드를 보여주고 각 줄의 왼쪽에 얼마나 오래 걸 렸는지 알려줍니다. dotTrace는 트리 뷰만 있습니다.

EQATEC 프로파일 러 는 매우 기본적이고 EQATEC 프로파일 러에서 실행할 수있는 특수 계측 버전의 어셈블리를 컴파일해야합니다. 그러나 무료입니다.

전반적으로 성능 프로파일 링을 위해 ANTS를 선호하지만 Resharper를 사용하면 dotTrace의 통합이 킬러 기능이며 ANTS보다 유용성이 뛰어납니다.

무료 Microsoft CLR 프로파일 러 ( .Net framework 2.0 / .Net Framework 4.0 )는 .NET 메모리 프로파일 링에 필요한 모든 것입니다.

2011 년 업데이트 :

사이텍 메모리 프로파일 러는 매우 기본적인 UI하지만 dotTrace와 개미가 부족한 관리되지 않는 메모리에 대한 몇 가지 정보를 포함하여 유용한 정보를 많이 가지고 - 당신은 유용 당신은 COM의 상호 운용성을하고 있다면 찾을 수 있습니다,하지만 난 COM하게 어떠한 프로파일을 찾을 아직 메모리 문제를 쉽게 진단 할 수 있습니다. 일반적으로 문제가 발생합니다 windbg.exe.

ANTS 프로파일 러는 지난 몇 년 동안 도약과 한계를 뛰어 넘었으며 메모리 프로파일 러에는 실제로 유용한 기능이있어서 dotTrace보다 앞서 나갔습니다. 운이 좋으면 둘 다 라이센스를 가질 수는 있지만 성능과 메모리 모두에 대해 하나의 .Net 프로파일 러를 구입하려는 경우 ANTS로 만드십시오.


다른 사람들은 성능 프로파일 링을 다루었지만 메모리 프로파일 링과 관련하여 현재 Scitech .NET Memory Profiler 3.1과 ANTS Memory Profiler 5.1 (2009 년 9 월 현재 버전)을 모두 평가하고 있습니다. 나는 일년 또는 2 년 전에 JetBrains을 시도했지만 ANTS (메모리 프로파일 링)만큼 좋지 않았으므로 이번에는 귀찮게하지 않았습니다. 웹 사이트를 읽은 결과 다른 두 사이트와 동일한 메모리 프로파일 링 기능 이없는 것 같습니다 .

ANTS와 Scitech 메모리 프로파일 러에는 다른 기능에는없는 기능이 있으므로 사용자 환경 설정에 따라 달라집니다. 일반적으로 Scitech 정보는 더 자세한 정보를 제공하는 반면 ANTS 정보는 누출되는 물체를 식별하는 데 실제로는 믿을 수 없습니다. 전반적으로, 가능한 누출을 식별하는 데 너무 빠르기 때문에 ANTS를 선호합니다.

다음은 제 경험의 주요 장단점입니다.

ANTS 및 Scitech .NET 메모리 프로파일 러의 공통 기능

  • 실시간 분석 기능
  • 그들의 웹 사이트에서 훌륭한 방법 비디오
  • 사용하기 쉬운
  • 합리적인 성능 (프로파일 러를 부착하지 않은 것보다 느리지 만 실망하지는 않음)
  • 새는 개체의 인스턴스 표시
  • 기본적으로 그들은 둘 다 일을 꽤 잘합니다

개미

  • 한 번의 클릭으로 필터를 통해 일반적인 누수를 찾을 수 있습니다 . 이벤트 처리기 만 사용하여 유지 한 개체, 폐기되었지만 여전히 살아있는 개체 및 폐기 된 개체의 참조를 통해서만 살아있는 개체. 이것은 아마도 ANTS의 킬러 기능 일 것입니다. 누수를 찾는 것이 엄청나게 빠릅니다. 내 경험상, 대부분의 누출은 이벤트 핸들러가 연결 해제되지 않아서 발생하며 ANTS는 이러한 객체로 바로 연결됩니다. 대박.
  • 객체 유지 그래프. Scitech에서도 동일한 정보를 사용할 수 있지만 ANTS에서는 해석하기가 훨씬 쉽습니다.
  • 개체 자체의 크기 외에 자식이있는 크기를 표시합니다 (그러나 불행히도 인스턴스가 전체 클래스 목록에서 선택되지 않은 경우에만).
  • Visual Studio와의 통합 향상 (그래프를 마우스 오른쪽 버튼으로 클릭하여 파일로 이동)

Scitech .NET 메모리 프로파일 러

  • 객체가 할당되었을 때 스택 추적을 표시합니다. 이것은 많은 다른 장소에 할당 된 객체에 정말 유용합니다. ANTS를 사용하면 누출 된 개체가 생성 된 위치를 정확하게 결정하기가 어렵습니다.
  • 폐기되지 않은 일회용 개체의 수를 나타냅니다. 누출을 나타내는 것은 아니지만 가비지 콜렉션이 빨라져이 문제점을 해결하고 애플리케이션 성능을 향상시킬 수있는 기회를 식별합니다.
  • 보다 자세한 필터링 옵션 (여러 열을 독립적으로 필터링 할 수 있음).
  • 작성된 총 오브젝트 (가비지 콜렉션 포함)에 대한 정보를 제공합니다. ANTS에는 '실시간'개체 통계 만 표시됩니다. 이를 통해 전반적인 애플리케이션 성능을보다 쉽게 ​​분석하고 조정할 수 있습니다 (예 : 누수가 아닌 객체를 불필요하게 생성하는 위치 식별).

요약하자면, ANTS가 누출을 더 빨리 찾는 데 도움이되는 반면 Scitech는 살펴볼 내용 (예 : 생성시 스택 추적)을 파악한 후 전체 애플리케이션 메모리 성능 및 개별 객체에 대해 조금 더 자세한 정보를 제공합니다. 처분되지 않은 일회용 물체의 스택 추적 및 추적이 ANTS에 추가되면 다른 것을 사용할 필요가 없습니다.


최근에 EQATEC Profiler http://www.eqatec.com/tools/profiler를 발견했습니다 . 대부분의 .NET 버전과 여러 플랫폼에서 작동합니다. 상업용으로도 사용하기 쉽고 일부는 무료입니다.


[ 전체 공개 ]

여기에 나열된 다른 .NET 메모리 프로파일 러만큼 완벽한 기능을 제공하지는 않지만 시장에 JustTrace 라는 새로운 항목이 있습니다 . Telerik에 의해 만들어졌으며 주요 목표는 모든 유형의 앱 (웹 / 실버 라이트 / 데스크톱)에보다 쉽고 빠르게 추적 / 프로파일 링을 수행하는 것입니다.

다른 도구를 사용하여 프로파일 링 및 최적화를 위협하거나 느리게 발견 한 경우 JustTrace살펴볼 가치가 있습니다.


잊지 마세요 nProf prefectly 좋은 프리웨어 프로파일 러를 -.


내가 찾은 dotTrace 프로파일 러를 하여 JetBrains의 자신의 ASP.NET 모드가 품질 .NET과위한 우수한 프로파일 링 도구가 될 수 있습니다.


ANTS 프로필러 . 나는 많이 사용하지는 않았지만 실제로 ANTS에 대한 불만은 없습니다. 시각화가 정말 도움이됩니다.


타이밍을위한 자동화 된 QA AQTime메모리를위한 SciTech MemProfiler .


빠르고 쉽고 무료 인 것을 찾고 있다면 http://code.google.com/p/slimtune/ 이 잘 작동하는 것 같습니다.


WinForms 및 콘솔 응용 프로그램 (아직 ASP.net에서 테스트되지 않음) 용 JetBrains dotTrace 로 작업하고 있으며 꽤 잘 작동합니다.

그들은 최근에 회사보다 훨씬 저렴한 "개인 라이센스"도 추가했습니다. 그래도 다른 사람이 더 싸거나 무료 인 것을 알고 있다면 나는 또한 듣고 싶습니다 :-)


멋진 scitech .net 메모리 프로파일 러를 잊지 마십시오

.net 앱에 메모리가 부족한 이유를 추적하는 데 좋습니다.


dotTrace의 메모리 및 성능 추적 세션 차이 기능은 절대적으로 귀중합니다 (ANTS에는 메모리 차이 기능이있을 수 있지만 성능 차이는 보이지 않았습니다).

버그 수정 또는 개선 전후에 프로파일 링 세션을 실행할 수 있으므로 성능을 우선시하지 않았고 병목 현상을 발견 할 수있는 거대한 레거시 .NET 애플리케이션 (특히 필자의 경우)에서 결과를 비교할 수 있습니다. 매우 지루합니다. diff 전후를 수행하면 각 메소드의 호출 횟수 변경각 메소드의 지속 시간 변경 을 볼 수 있습니다 .

이는 코드 변경시뿐만 아니라 각 클라이언트 / 고객에 대해 다른 데이터베이스를 사용하는 응용 프로그램이있는 경우에도 유용합니다. 한 고객이 속도 저하를 호소하는 경우 데이터베이스를 사용하여 프로파일 링 세션을 실행하고 결과를 "빠른"데이터베이스와 비교하여 속도 저하에 기여하는 작업을 확인할 수 있습니다. 물론 많은 데이터베이스 측 성능 도구가 있지만 때로는 응용 프로그램 측에서 성능 메트릭을 보는 데 실제로 도움이됩니다 (사용자가 실제로 보는 것과 더 가깝기 때문에).

결론 : dotTrace는 훌륭하게 작동하며 diff는 매우 중요합니다.


AQTime 은 합리적이지만 약간의 학습 곡선이 있으며 Team Suite에서 기본 제공되는 것만 큼 사용하기 쉽지 않습니다.


과거에는 Visual Studio Team System 과 함께 제공되는 프로파일 러를 사용했습니다 .


SharpDevelop (3.1.1) 의 현재 릴리스 에는 멋진 통합 프로파일 러가 있습니다. 매우 빠르며 SharpDevelop IDE 및 NUnit 러너에 매우 잘 통합됩니다. 결과는 유연한 트리 /리스트 스타일로 표시됩니다 (LINQ를 사용하여 원하는 선택). 표시된 메소드를 두 번 클릭하면 소스 코드로 직접 이동합니다.


나는 과거에 RedGate의 프로파일 러와 함께 일했습니다. 나를 위해 일을 했어.


직접 시도하지는 않았지만 dotTrace ? 그들의 ReSharper 응용 프로그램은 확실히 좋은 응용 프로그램입니다. 아마 dotTrace도 :)


Visual Studio Team System과 함께 제공되는 프로파일 러가 최고의 프로파일 러인지 의심하지만 여러 경우에 충분하다는 것을 알았습니다. VS가 제공하는 것 이상으로 무엇이 구체적으로 필요합니까?

편집 : 불행히도 VS Team System에서만 사용할 수 있지만 액세스 할 수 있으면 체크 아웃 할 가치가 있습니다.


ANTS 메모리 프로파일 러의 최신 버전 (5 인 것 같습니다) WinDbg와 SOS를 사용하여 누수가 발생하는 것이 가장 좋은 방법이기 때문에 ANTS를 시도하고 몇 분 안에 얻었습니다. 정말 멋진 소프트웨어입니다.


yourkit java 및 .net 프로파일 러 를 추가하고 싶습니다 .Java를 좋아하지만 .NET 버전을 시도하지 않았습니다.


불행히도 테일 콜과 함께 사용할 때 시도한 대부분의 프로파일 러, 특히 ANTS가 실패했습니다. 난 그냥 내 자신을 작성 끝납니다. CodeProject에는 기본으로 사용할 수있는 간단한 구현이 있습니다.


빠른 샘플링을위한 인텔 ® VTune ™ 성능 분석기


나는 언젠가 다시 사용했던 당신의 통지에 놀라운 도구를 가져와야합니다. AVICode 인터셉터 스튜디오 . 이전 회사에서는이 훌륭한 도구를 사용 하여 웹 응용 프로그램 을 프로파일 링했습니다 ( 이것은 세계에서 가장 큰 단일 웹 응용 프로그램이자 가장 큰 민간 IT 프로젝트로 간주됩니다 ). 퍼포먼스 팀은이 멋진 도구를 사용하여 놀라운 결과를 얻었습니다. 그것을 구성하는 것은 고통이지만, 그것은 한 번의 활동이며 시간 가치가 있다고 말할 것입니다. 체크 아웃 이 페이지에 대한 자세한 내용을.

고마워, 제임스


나에게 SpeedTrace는 응용 프로그램 내에서 병목 현상을 찾는 데 도움이 될뿐 아니라 시장에서 가장 유용한 도구입니다. 또한 문제 해결 시나리오에서 응용 프로그램 충돌 원인, 설치가 설치되지 않았거나 응용 프로그램이 끊어 졌거나 응용 프로그램 성능이 데이터 입력에 따라 저하되는 경우가 있습니다 (예 : 느린 db 트랜잭션 식별).


나는 최근 Telerik의 JustTrace를 테스트 해 왔으며 완제품과는 거리가 멀지 만 사람들은 올바른 방향으로 가고 있습니다.


라이센싱이 문제인 경우 메모리 프로파일 링을 위해 WINDBG를 사용해 볼 수 있습니다


NuMega True Time 프로파일 러는 Micro Focus의 DevPartner Studio에 있습니다. PDB 만 필요하고 소스는 필요하지 않은 .NET 앱에 대한 라인 및 메소드 레벨 세부 사항을 제공하지만 도움이됩니다. 독자적인 스레드 별 커널 모드 타이밍 드라이버를 사용하여 알고리즘이 많은 루틴과 긴 I / O 대기 시간을 구별 할 수 있습니다. 버전 10.5는 2011 년 2 월 4 일에 새로운 64 프로세스 지원을 제공합니다. 뻔뻔한 플러그 : DevPartner 제품 라인에서 작업합니다. 10.5 출시 소식을 보려면 http://www.DevPartner.com팔로우 하십시오 .

면책 조항 : 저는 Micro Focus의 DevPartner 제품 관리자입니다.


this를 사용하여 큰 C # 앱에서 많은 문제를 발견 했습니다 .

일반적으로 플러그인이로드되고 빅 데이터 구조가 생성, 소멸, 직렬화 또는 직렬화 해제됨에 따라 시작 또는 종료 중에 문제가 발생합니다. 종종 두 번 이상 생성 및 초기화되고 변경 처리기가 여러 번 추가되어 문제가 더욱 심화됩니다.

이와 같은 경우, 프로그램이 너무 느려서 2 개의 샘플만으로 유죄 분석법 / 기능 / 재산 콜 사이트를 찾아 낼 수 있습니다.


우리는 회사에서 .NET 용 YourKit Profiler를 최고의 가치 (가격 대비 기능)로 선택했습니다. 유연한 라이센스 (부동 라이센스)를 원하는 소규모 회사의 경우 완벽한 선택이었습니다. 당시 ANTS는 개발자 시트 로켓이었습니다.

또한 dotTrace로는 불가능했던 실행중인 프로세스에 연결할 수있는 기능을 제공했습니다. 모든 .NET이 느려질 수 있으므로 첨부하는 것이 최선의 선택은 아니지만 다른 프로세스에서 시작한 .NET 응용 프로그램을 프로파일 링하는 유일한 방법이었습니다. 현명한 특징으로, ANTS와 dotTrace가 더 좋았지 만 결국 YourKit은 충분했습니다.


ASP.NET MVC를 사용하는 경우 MVCMiniProfiler (http://benjii.me/2011/07/using-the-mvc-mini-profiler-with-entity-framework/)를 사용해 볼 수 있습니다

참고 URL : https://stackoverflow.com/questions/3927/what-are-some-good-net-profilers



반응형