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


374

.net 프로그램으로 작업 할 때 어떤 프로파일 러를 사용했으며 특히 권장하는 것은 무엇입니까?

답변:


285

내가 사용하고 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 프로파일 러는 지난 몇 년 동안 비약적으로 발전했으며 메모리 프로파일 러에는 실제로 유용한 기능이 몇 가지 있습니다. 둘 다 라이센스를 가질만큼 운이 좋지만 성능과 메모리 모두에 대해 하나의 .Net 프로파일 러를 구입하려는 경우 ANTS로 만드십시오.


5
Visual Studio의 프로파일 러도 사용하기 쉽고 Visual Studio 2010은 베타 버전이므로 무료입니다. 2010 년에는 경합 및 동시성을 볼 수 있도록 여러 가지 기능이 향상되었습니다. 시도해보세요.
Rick Rick

15
@Rick 불행하게도 Visual Studio의 프로파일 러는 Professional Edition에 없습니다 ...
Drake

CLR 프로파일 러가 .NET 메모리 프로파일 링에 필요한 모든 것에 대해 동의하지는 않지만 시간에 가치를 두지 않으면 사실 일 수 있습니다. 메모리 프로파일 러의 최고의 커플의 요약에 대한 내 대답은 아래를 참조 - 그들은 것입니다 당신이 훨씬 더 빠른 메모리 누수 및 잠재적 인 문제를 찾을 수 있습니다.
벤 로빈스

1
EQUATEC 프로파일 러의 현재 릴리스는 더 이상 무료가 아닙니다.
David Schmitt

1
EQATEC 프로파일 러처럼 보인다는 다시 .NET (전체 프레임 워크) 무료이되었다
soren.enemaerke

88

다른 사람들은 성능 프로파일 링을 다루었지만 메모리 프로파일 링과 관련하여 현재 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에 추가되면 다른 것을 사용할 필요가 없습니다.


4.0 버전의 .NET Memory Profiler (현재 미리보기)에는 이제 그래프보기가 있습니다. 이것은 Scitech에 없었던 ANTS 프로파일 러에서 내가 좋아했던 기능이었습니다 (3.1 / 3.5).
cplotts

45

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


테일 콜에서도 실패 :(보고 된 버그.
leppie

이것은 비상업적 용도로만 무료입니다.
Jon Seigel

7
TrolleFar가 그의 답변을 썼을 때 08 년 8 월에 완전히 무료로 돌아 왔습니다. Jon이 말했듯이 이제는 비상업적 용도로는 무료입니다.
Richard Flamsholt

8
라이센스 조건을 다시 변경 한 것으로 나타났습니다. 그것의 일부는 다시 상업적으로 사용하기 위해 무료입니다.
TrolleFar

FEB2011 현재 자체 / 상업용 일반 .NET 버전은 무료입니다. 이 도구는 클라이언트 / 서버 모델에서 작동하며 반복 경계를 프로파일 / 바이 패스 할 수 있기 때문에 좋습니다 (예 : Native-> COM-> NET-> COM-> NET 프로파일 링 가능). UI는 다소 끔찍합니다 :-)

31

[ 전체 공개 ]

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

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


12
다운로드하여 사용해 볼 때 Telerik은 "등록"및 "계정 만들기"를 원합니다. 그리고 모든 뉴스 레터 구독 버튼은 기본적으로 확인 표시되어 있습니다. JustTrace에 시도해 보니 기쁘지만 Telerik이이를 어렵게 만들지는 않습니다.
Ryan Lundy

1
시도해 주셔서 감사합니다, Kyralessa. 프로세스를 개선 할 수 있다는 것을 알고 있습니다. 우리는 지금 그 일을하고 있습니다. 우리는 그 장애물을 빨리 제거하기를 희망합니다. 지금은 확인란의 선택을 해제하면 2 분 안에 계정과 무료 JustTrace 다운로드가 가능합니다. 단기적인 문제로 죄송합니다. -T
Todd

9
계정을 만들지 않고 다운로드 할 수있는시기를 알려 주시면 사용해 보겠습니다.
Ryan Lundy

4
업데이트 : 오늘 계정을 만들지 않고도 답변의 링크를 사용하여 다운로드 할 수있었습니다.
Ryan Lundy

25

현존 하는 프리웨어 프로파일 러 인 nProf를 잊지 마십시오 .


3
버려진 것 같습니다 ... 2006 년 이후의 알파 릴리스 만 해당 :-(
Mauricio Scheffer

2
나를 위해 일했다. 이제 Google 코드 프로젝트입니다. 2009 년 7 월에 릴리스가있었습니다.
User1

19
이제 nProf 페이지에 NProf가 더 이상 개발되지 않았습니다. 오픈 소스 .NET 프로파일 러를 찾고 있다면 SlimTune ( code.google.com/p/slimtune )
Richard Ev


12

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




9

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

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


7

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

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


1
아주 좋은 도구입니다. 사용하기 쉽고 객체 그래프를 탐색 할 수 있습니다. 나는 '실시간'메모리 추적을 간신히 좋아합니다. 응용 프로그램을 실행하는 동안 개체 수가 어떻게 개발되는지 보여줍니다.
lowglider

5

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

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

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

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


4

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



3

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


2

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


2

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


1
dotTrace를 사용하여 추천 할 수 있습니다.
Jon Skeet

2

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

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


1
VS2008의 내용에 대해 이야기했지만 모든 버전에서 사용 가능한 것은 아닙니다 (VSTS를 사용하고 있습니다). PDC2008 비디오에서 VS2010에서 프로파일 러가 크게 향상되는 것처럼 보입니다.
Brian Rasmussen

1
해당 프로파일 러는 Team Systems 버전의 Visual Studio에서만 사용할 수 있습니다.
Chris Brandsma

Visual Studio Team System (Developer Edition)에는 프로파일 러가 있습니다. < microsoft.com/visualstudio/en-us/products/teamsystem/… >을 참조하십시오 .
gix

Visual Studio에는 VS 2005 이후에 프로파일 러가 있습니다. Team System에서만 사용할 수 있습니다. 사실, 나는 팀 시스템을 사용하는 이유입니다 (직장에서 전문가가 있습니다). 제 생각에는 아주 좋은 프로파일 러입니다.
구성자

훌륭한 프로파일 러이지만 ANTS의 새 버전의 표준에 맞지 않습니다.
mqp

2

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



1

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



1

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

고마워, 제임스


1

나에게 SpeedTrace는 응용 프로그램 내에서 병목 현상을 찾는 데 도움이 될뿐 아니라 시장에서 가장 유용한 도구입니다. 또한 문제 해결 시나리오에서 응용 프로그램이 중단 된 이유, 설치가 설치되지 않은 경우, 응용 프로그램이 중단 된 경우 및 느린 DB 트랜잭션 식별과 같은 데이터 입력에 따라 응용 프로그램 성능이 저하되는 경우가 있습니다.


1

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


1

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


1

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 제품 관리자입니다.


SO에 오신 것을 환영합니다. DevPartner와의 관계를 공개해야합니다. 그렇지 않으면 스패머로 간주되어 처리됩니다. 당신이 여러 가지 프로파일 링 질문에 답변 한 것을 보았습니다 ...
John Saunders

0

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

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

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


0

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

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


2012 년 1 월부터 YourKit은 YourKit 프로파일 러의 가격을 올렸습니다. 따라서 가격 우위가 더 이상 유효하지 않을 수 있습니다.

0

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.