문제

.net 프로그램 작업 시 어떤 프로파일러를 사용해 보셨으며, 특히 어떤 프로파일러를 추천하시겠습니까?

도움이 되었습니까?

해결책

나는 사용했다 JetBrains dotTrace 그리고 레드게이트 개미 널리.기능과 가격면에서 상당히 유사합니다.둘 다 유용한 성능 프로파일링과 매우 기본적인 메모리 프로파일링을 제공합니다.

dotTrace는 Resharper와 통합되어 IDE에서 한 번의 클릭으로 단위 테스트 성능을 프로파일링할 수 있어 매우 편리합니다.그러나 dotTrace는 종종 잘못된 결과를 제공하는 것으로 보입니다(예:메소드를 실행하는 데 몇 년이 걸렸다고 말함)

나는 ANTS가 프로파일링 결과를 제시하는 방식을 선호합니다.소스 코드가 표시되고 각 줄의 왼쪽에는 실행하는 데 걸린 시간이 표시됩니다.dotTrace에는 트리 보기만 있습니다.

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

전반적으로 저는 성능 프로파일링을 위해 ANTS를 선호합니다. 하지만 Resharper를 사용하는 경우 dotTrace 통합은 킬러 기능이며 유용성 측면에서 ANTS를 능가한다는 의미입니다.

무료 Microsoft CLR 프로파일러(.Net 프레임워크 2.0 / .Net 프레임워크 4.0)은 .NET 메모리 프로파일링에 필요한 전부입니다.

2011년 업데이트:

그만큼 Scitech 메모리 프로파일러 매우 기본적인 UI가 있지만 dotTrace와 ANTS가 부족한 관리되지 않는 메모리에 대한 일부 정보를 포함하여 유용한 정보가 많이 있습니다. COM 상호 운용성을 수행하는 경우 유용할 수 있지만 아직 COM 메모리 문제를 쉽게 해결할 수 있는 프로파일러를 찾지 못했습니다. 진단 - 일반적으로 탈출해야 함 windbg.exe.

ANTS 프로파일러는 지난 몇 년 동안 비약적으로 발전했으며 메모리 프로파일러에는 이제 패키지로서 dotTrace보다 앞서는 몇 가지 유용한 기능이 있습니다.운이 좋게도 두 가지 모두에 대한 라이센스를 보유하고 있지만 성능과 메모리 모두에 대해 하나의 .Net 프로파일러를 구입하려면 ANTS로 만드십시오.

다른 팁

다른 사람들은 성능 프로파일링을 다루었지만 메모리 프로파일링과 관련하여 저는 현재 Scitech .NET Memory Profiler 3.1과 ANTS Memory Profiler 5.1(2009년 9월 현재 버전)을 모두 평가하고 있습니다.1~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 프로파일러를 발견했습니다. http://www.eqatec.com/tools/profiler.대부분의 .NET 버전 및 다양한 플랫폼에서 작동합니다.사용하기 쉽고 일부는 무료이며 상업적인 용도로도 사용할 수 있습니다.

[전체 공개]

여기에 나열된 다른 .NET 메모리 프로파일러만큼 완전한 기능을 갖춘 것은 아니지만 시장에 다음과 같은 새로운 항목이 있습니다. 저스트트레이스.이는 Telerik에서 만들었으며 주요 목표는 모든 유형의 앱(웹/Silverlight/데스크톱)에 대해 추적/프로파일링을 더 쉽고 빠르게 수행하는 것입니다.

다른 도구를 사용할 때 프로파일링과 최적화가 두렵거나 느리다고 느낀 적이 있다면, 저스트트레이스 한 번 볼만한 가치가 있을지도 모릅니다.

잊지 마세요 n교수 - 아주 좋은 프리웨어 프로파일러입니다.

나는 발견했다 dotTrace 프로파일러 ~에 의해 JetBrains .NET을 위한 뛰어난 프로파일링 도구이며 ASP.NET 모드는 품질이 뛰어납니다.

개미 프로파일러.많이 사용해본 적은 없지만 ANTS에 대한 불만은 딱히 없습니다.시각화가 정말 도움이 됩니다.

자동화된QA AQ시간 타이밍과 SciTech MemProfiler 기억을 위해.

빠르고 쉽고 무료인 것을 찾고 계시다면, http://code.google.com/p/slimtune/ 일을 잘하는 것 같습니다.

나는 함께 일해 왔습니다 JetBrains dotTrace WinForms 및 콘솔 앱(아직 ASP.net에서는 테스트되지 않음)의 경우 매우 잘 작동합니다.

최근에는 기업 라이선스보다 훨씬 저렴한 '개인 라이선스'도 추가했습니다.그래도 다른 사람이 더 저렴하거나 무료인 제품을 알고 있다면 저도 듣고 싶습니다. :-)

멋진 과학 기술을 잊지 마세요 .net 메모리 프로파일러

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

dotTrace의 기능을 추가하겠습니다. 메모리 및 성능 추적 세션 비교 매우 중요합니다(ANTS에도 메모리 차이 기능이 있을 수 있지만 성능 차이는 확인하지 못했습니다).

버그 수정 또는 개선 전후에 프로파일링 세션을 실행하고 결과를 비교할 수 있다는 것은 특히 성능이 결코 우선순위가 아니었고 병목 현상을 찾는 것이 어려울 수 있는 거대한 레거시 .NET 애플리케이션(내 경우와 같이)의 경우 매우 중요합니다. 매우 지루합니다.전후 비교를 통해 확인할 수 있습니다. 메소드별 호출 횟수 변경 그리고 각 방법의 기간 변경.

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

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

AQ시간 합리적이지만 약간의 학습 곡선이 있고 Team Suite에 내장된 것만큼 사용하기 쉽지 않습니다.

과거에는 다음과 함께 제공되는 프로파일러를 사용했습니다. Visual Studio 팀 시스템.

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

나는 과거에 RedGate의 프로파일러로 작업한 적이 있습니다.나를 위해 일을 했어요.

직접 해보지는 않았지만 아마도 도트트레이스?ReSharper 애플리케이션은 확실히 좋은 애플리케이션입니다.아마도 dotTrace도 마찬가지일 것입니다 :)

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

편집하다:안타깝게도 VS Team System에서만 사용할 수 있지만 액세스할 수 있다면 확인해 볼 가치가 있습니다.

ANTS 메모리 프로파일러의 최신 버전(내 생각에는 5인 것 같습니다)은 정말 훌륭합니다!!!저는 WinDbg와 SOS를 사용하여 누수 문제를 해결했습니다. 이전에 이것이 최선의 방법임이 입증되었기 때문입니다. 그런 다음 ANTS를 시도했고 몇 분 만에 해결했습니다.정말 훌륭한 소프트웨어입니다.

추가하고 싶습니다 당신의 키트 java 및 .net 프로파일러는 Java용으로 마음에 들지만 .NET 버전은 사용해 본 적이 없습니다.

불행하게도 내가 시도한 대부분의 프로파일러는 tail call과 함께 사용할 때 실패했으며, 특히 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 제품 라인에서 일하고 있습니다.후속 조치: http://www.DevPartner.com 10.5 출시 소식을 확인하세요.

부인 성명:저는 Micro Focus의 DevPartner 제품 관리자입니다.

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

일반적으로 플러그인이 로드되고 빅 데이터 구조가 생성, 파괴, 직렬화 또는 역직렬화되는 동안 시작 또는 종료 중에 문제가 발생합니다.종종 두 번 이상 생성 및 초기화되고 변경 핸들러가 여러 번 추가되어 문제가 더욱 복잡해집니다.

이와 같은 경우 프로그램이 너무 느려서 유죄 메소드/함수/속성 호출 사이트를 찾아내는 데 단 2개의 샘플만으로 충분할 수 있습니다.

우리 회사에서는 최고의 가치(가격 대특징).유연한 라이센스(부동 라이센스)를 원하는 소규모 회사의 경우 이는 완벽한 선택이었습니다. 당시 ANTS는 개발자 자리였습니다.

또한 dotTrace에서는 불가능했던 실행 중인 프로세스에 연결하는 기능도 제공했습니다.모든 .NET의 속도가 느려지므로 연결이 최선의 옵션은 아니지만 이는 다른 프로세스에서 시작된 .NET 애플리케이션을 프로파일링하는 유일한 방법이었습니다.기능적으로는 ANTS와 dotTrace가 더 나았지만 결국 YourKit만으로도 충분했습니다.

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

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top