좋은 .NET 프로파일러는 무엇입니까?
.net 프로그램으로 작업할 때 어떤 프로파일러를 사용했으며 특히 어떤 프로파일러를 추천하시겠습니까?
저는 제트브레인 도트 트레이스와 레드게이트 ANTS를 광범위하게 사용해 왔습니다.그것들은 특징과 가격이 상당히 비슷합니다.둘 다 유용한 성능 프로파일링과 상당히 기본적인 메모리 프로파일링을 제공합니다.
IDE에서 한 번의 클릭으로 단위 테스트의 성능을 프로파일링할 수 있기 때문에 dotTrace는 Resharper와 통합되어 매우 편리합니다.그러나 dotTrace는 종종 거짓 결과를 제공하는 것처럼 보입니다(예: 방법을 실행하는 데 몇 년이 걸렸다고 말하는 것).
저는 ANTS가 프로파일링 결과를 제시하는 방식을 선호합니다.소스 코드가 표시되고 각 줄의 왼쪽에 실행 시간이 표시됩니다. dotTrace에는 트리 뷰가 있습니다.
EQATEC 프로파일러는 매우 기본적이며 EQATEC 프로파일러에서 실행할 수 있는 어셈블리의 특수 계측 버전을 컴파일해야 합니다.하지만, 그것은 무료입니다.
전반적으로 성능 프로파일링을 위해 ANTS를 선호하지만, Resharper를 사용할 경우 dotTrace의 통합은 치명적인 기능이며 사용성에서 ANTS를 능가합니다.
무료 마이크로소프트 CLR 프로파일러(.Net Framework 2.0 /.NetFramework 4.0)만 있으면 .NET 메모리 프로파일링에 필요합니다.
2011 업데이트:
Scitech 메모리 프로파일러는 상당히 기본적인 UI를 가지고 있지만 dotTrace 및 ANTs에 부족한 관리되지 않는 메모리에 대한 일부 정보를 포함하여 많은 유용한 정보를 가지고 있습니다. COM 인터럽트를 수행하는 경우 유용할 수 있지만, COM 메모리 문제를 쉽게 진단할 수 있는 프로파일러를 아직 찾지 못했습니다. 일반적으로 중단해야 합니다.windbg.exe
.
ANTS 프로파일러는 지난 몇 년 동안 비약적으로 발전했고, 메모리 프로파일러는 정말 유용한 기능들을 가지고 있어서 제가 보기에는 패키지로서 dotTrace보다 앞서고 있습니다.둘 다 라이선스를 가지고 있는 건 행운이지만, 만약 당신이 하나를 살 거라면.성능과 메모리 모두를 위한 넷 프로파일러, ANTS로 만듭니다.
다른 사람들은 성능 프로파일링을 다루었지만 메모리 프로파일링과 관련하여 현재 Scitech.NET Memory Profiler 3.1과 ANTS Memory Profiler 5.1(2009년 9월 현재 버전)을 모두 평가하고 있습니다.1~2년 전에 JetBrain을 시도해봤는데 (기억 프로파일링을 위해) ANTS만큼 좋지 않아서 이번에는 신경 쓰지 않았습니다.웹 사이트를 읽어보니 다른 두 사이트와 동일한 메모리 프로파일링 기능이 없는 것 같습니다.
ANTS와 Scitech 메모리 프로파일러는 둘 다 다른 사람에게는 없는 기능을 가지고 있기 때문에 어떤 것이 최선인지는 사용자의 선호도에 따라 달라집니다.일반적으로, Scitechone은 더 자세한 정보를 제공하는 반면, ANTS는 누출되는 물체를 식별하는 데 정말로 탁월합니다.전체적으로, 저는 ANTS를 선호합니다. 왜냐하면 그것은 가능한 누출을 식별하는 데 매우 빠르기 때문입니다.
다음은 제 경험에서 얻은 각각의 주요 장단점입니다.
ANTS 및 Scitech .NET 메모리 프로파일러의 공통 기능
- 실시간 분석 기능
- 웹 사이트의 우수한 사용법 비디오
- 사용하기 편리함
- 합리적인 성능(프로파일러를 연결하지 않은 것보다 확실히 느리지만 좌절감을 느끼는 정도는 아닙니다.)
- 개체 누출 인스턴스 표시
- 기본적으로 그들은 둘 다 그 일을 꽤 잘 합니다.
개미
- 원클릭 필터를 사용하여 이벤트 핸들러에서만 활성 상태로 유지되는 개체, 제거되었지만 여전히 활성 상태인 개체 및 제거된 개체의 참조로만 활성 상태로 유지되는 개체를 포함하여 일반적인 누출을 찾습니다.이것은 아마도 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를 잊지 마십시오. nProf는 매우 우수한 프리웨어 프로파일러입니다.
JetBrains의 dotTrace Profiler는 .NET의 탁월한 프로파일링 도구이며 ASP.NET 모드는 품질입니다.
ANTS 프로파일러.저는 많이 사용하지는 않았지만, 개미에 대한 불만은 별로 없습니다.시각화는 정말 도움이 됩니다.
자동화된타이밍을 위한 QAQTime과 메모리를 위한 SciTech MemProfiler.
빠르고, 쉽고, 무료인 것을 찾고 있다면, http://code.google.com/p/slimtune/ 이 그 일을 잘 해내는 것 같습니다.
WinForms 및 Console Apps(ASP.net 에서 아직 테스트되지 않음)에 대해 JetBrains dotTrace와 함께 작업해 왔으며, 다음과 같이 매우 잘 작동합니다.
그들은 또한 최근에 법인 면허증보다 훨씬 저렴한 "개인 면허증"을 추가했습니다.그래도 더 싸거나 무료인 것을 아는 사람이 있다면 저도 듣고 싶습니다 :-)
멋진 scitech.net 메모리 프로파일러를 잊지 마세요.
.net 앱의 메모리가 부족한 이유를 추적하는 데 유용합니다.
저는 메모리 및 성능 추적 세션을 분산시키는 dotTrace의 능력이 절대적으로 가치가 있다고 덧붙이고 싶습니다. (ANTS에도 메모리 차이 기능이 있을 수 있지만 성능 차이는 보지 못했습니다.)
버그 수정 또는 개선 전후에 프로파일링 세션을 실행할 수 있는 것은 특히 성능이 결코 우선순위가 아니며 병목 현상을 찾는 것이 매우 번거로울 수 있는 매머드 레거시 .NET 애플리케이션과 비교하는 데 매우 유용합니다.전후 차이를 수행하면 각 메서드에 대한 호출 수의 변화와 각 메서드에 대한 기간의 변화를 확인할 수 있습니다.
이 기능은 코드를 변경하는 동안뿐만 아니라 클라이언트/고객별로 다른 데이터베이스를 사용하는 응용프로그램이 있는 경우에도 유용합니다.한 고객이 속도 저하를 호소하는 경우, 데이터베이스를 사용하여 프로파일링 세션을 실행하고 그 결과를 "빠른" 데이터베이스와 비교하여 속도 저하의 원인이 되는 작업을 확인할 수 있습니다.물론 데이터베이스 측면의 성능 툴이 많이 있지만, 애플리케이션 측면에서 성능 메트릭을 확인하는 데 도움이 되는 경우도 있습니다(사용자가 실제로 보고 있는 것에 가깝기 때문에).
결론: dotTrace는 매우 효과적이며, 그 차이는 매우 중요합니다.
AQTime은 합리적이지만 학습 곡선이 약간 있으며 Team Suite의 기본 제공 시간만큼 사용하기가 쉽지 않습니다.
이전에는 Visual Studio Team System과 함께 제공되는 프로파일러를 사용했습니다.
SharpDevelop(3.1.1)의 최신 릴리스에는 멋진 통합 프로파일러가 있습니다.이것은 매우 빠르고 샤프 개발 IDE와 UNit 러너에 매우 잘 통합됩니다.결과는 유연한 Tree/List 스타일로 표시됩니다(LINQ를 사용하여 직접 선택 항목을 만듭니다).표시된 메서드를 두 번 클릭하면 소스 코드로 바로 이동합니다.
과거에 레드게이트의 프로파일러와 함께 일한 적이 있습니다.저를 위해 그 일을 했습니다.
제가 직접 해보지는 않았지만, 아마도 도트 트레이스?그들의 ReSharper 애플리케이션은 확실히 좋은 애플리케이션입니다.아마도 dotTrace도 마찬가지일 것입니다 :)
Visual Studio Team System과 함께 제공되는 프로파일러가 최고의 프로파일러인지는 의심스럽지만 여러 번 충분히 좋은 프로파일러라는 것을 알게 되었습니다.VS가 제공하는 것 외에 구체적으로 무엇이 필요합니까?
편집: 안타깝게도 VS 팀 시스템에서만 사용할 수 있지만 액세스 권한이 있는 경우 확인해 볼 가치가 있습니다.
ANTS 메모리 프로파일러의 최신 버전(5개인 것 같습니다)은 그야말로 락스!!!이전에 WinDbg와 SOS를 사용하는 것이 가장 좋은 방법이라는 것이 증명되었기 때문에 저는 누출을 기억하고 있었습니다. 그리고 나서 ANTS를 시도했고 몇 분 만에 그것을 얻었습니다.정말 훌륭한 소프트웨어입니다.
저는 당신의 키트 자바와 .net 프로파일러를 추가하고 싶습니다, 저는 자바를 위해 그것을 사랑하지만, .NET 버전은 시도하지 않았습니다.
불행하게도 제가 시도한 대부분의 프로파일러들은 테일 콜과 함께 사용되었을 때 실패했습니다. 특히 ANTS.저는 그냥 제 글을 쓰게 됩니다.CodeProject에는 기본으로 사용할 수 있는 간단한 구현이 있습니다.
빠른 샘플링을 위한 Intel® VTune™ Performance Analyzer
저는 제가 언젠가 사용했던 놀라운 도구를 당신의 주의를 끌어야 합니다.AV 코드 가로채기 스튜디오.이전 회사에서는 이 훌륭한 툴을 사용하여 웹 애플리케이션을 프로파일링했습니다(이는 세계에서 가장 큰 단일 웹 애플리케이션이자 지금까지 수행된 민간 IT 프로젝트 중 가장 큰 규모입니다).그 공연팀은 이 훌륭한 도구의 도움으로 놀라운 일을 했습니다.구성하는 것은 번거롭지만, 그것은 일회성 활동이며 시간을 들일 가치가 있다고 생각합니다.자세한 내용은 이 페이지를 확인하십시오.
고마워요, 제임스
SpeedTrace는 애플리케이션 내부의 병목 현상을 찾는 데 도움이 되지 않기 때문에 시장에서 가장 적합한 툴입니다.또한 문제 해결 시나리오에서 애플리케이션 충돌, 설치 실패, 애플리케이션 중단, 느린 DB 트랜잭션 식별 등의 데이터 입력에 따라 애플리케이션 성능이 저하되는 원인을 파악할 수 있습니다.
저는 최근에 텔레릭의 저스트 트레이스를 테스트하고 있으며 완성된 제품과는 거리가 멀지만 남자들은 올바른 방향으로 가고 있습니다.
라이센싱이 문제인 경우 메모리 프로파일링을 위해 WINDBG를 시도할 수 있습니다.
NuMega True Time 프로파일러는 Micro Focus의 DevPartner Studio에 상주합니다.PDB만 필요하고 소스가 필요하지 않은 .NET 앱에 대한 라인 및 메서드 수준 세부 정보를 제공합니다(하지만 도움이 됩니다).고유한 스레드별 커널 모드 타이밍 드라이버를 사용하여 알고리즘적으로 무거운 루틴과 I/O 대기 시간이 긴 루틴을 구별할 수 있습니다.버전 10.5는 2011년 2월 4일에 새로운 64-프로세스 지원과 함께 제공됩니다.파렴치한 플러그:저는 DevPartner 제품 라인에서 일하고 있습니다.http://www.DevPartner.com 에서 10.5 출시 소식을 확인하십시오.
고지 사항:저는 Micro Focus의 DevPartner 제품 매니저입니다.
저는 이것을 사용하는 큰 C# 앱에서 많은 문제를 발견했습니다.
일반적으로 이 문제는 플러그인이 로드되고 빅데이터 구조가 생성, 파괴, 직렬화 또는 역직렬화되고 있기 때문에 시작 또는 종료 중에 발생합니다.종종 두 번 이상 생성되고 초기화되며 변경 처리기가 여러 번 추가되어 문제가 더욱 복잡해집니다.
이러한 경우 프로그램이 너무 느려 두 개의 샘플만으로 유죄인 방법/기능/재산 호출 사이트를 정확히 파악할 수 있습니다.
우리 회사에서는 .NET용 귀하의 키트 프로파일러를 최고의 가치(가격 대비 기능)로 선택했습니다.유연한 라이센스(부동 라이센스)를 원하는 소규모 기업에게는 완벽한 선택이었습니다. 당시 ANTS는 개발자 시트 로킷이었습니다.
또한 dotTrace에서는 불가능한 실행 프로세스에 첨부할 수 있는 기능을 제공했습니다..NET은 모든 것이 느려지기 때문에 첨부하는 것이 최선의 옵션은 아니지만 다른 프로세스에 의해 시작된 .NET 응용 프로그램을 프로파일링하는 유일한 방법이었습니다.특징적으로, ANTS와 dotTrace가 더 낫지만 결국 당신의 키트는 충분했습니다.
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
'programing' 카테고리의 다른 글
파이몬고 커서에 쿼리 결과가 있는지 확인하는 방법 (0) | 2023.06.02 |
---|---|
관계에 대한 사용 권한이 거부되었습니다. (0) | 2023.06.02 |
Android에서 토스트를 표시하는 방법은 무엇입니까? (0) | 2023.06.02 |
엑셀에 병합과 같은 기능이 있나요? (0) | 2023.06.02 |
루비에서 이진 파일을 문자열로 읽기 (0) | 2023.06.02 |