Profilers for the CLR


While I was on my recent road-trip I heard over and over again that people wanted better tools to know what is really going on in the CLR primarily for tracking down performance issues.  Profilers are a great way to do that.  You may be heard about the CLR Profiler, but there are tons of others on the market as well, many with different areas of focus, etc.  Here is a list of the profilers the CLR team works with (or is aware of) that I thought I’d pass along.

 

Traditional Performance and/or Memory Profilers

Released

AutomatedQA AQTime: http://www.automatedqa.com/products/aqtime/index.asp (evaluation version available)

Borland Optimizeit: http://www.borland.com/opt_profiler/ (evaluation version available)

Compuware DevPartner: http://www.compuware.com/products/devpartner/default.htm (evaluation version available)

Intel VTune: http://www.intel.com/software/products/vtune/index.htm (evaluation version available)

Rational PurifyPlus: http://www-306.ibm.com/software/awdtools/purifyplus/win/ (evaluation version available)

Red Gate ANTS Profiler: http://www.red-gate.com/code_profiling.htm (evaluation version available)

SciTech .NET Memory Profiler: http://memprofiler.com/ (evaluation version available)

 

Currently in Development

JetBrains .NET Profiler: http://www.jetbrains.net/confluence/display/NetProf/Home (Early Access Program)

 

Enterprise Health Monitors

 

AVICode Intercept Studio: http://www.avicode.com/content/products/InterceptStudio.asp

Identify AppSight: http://www.identify.com/solutions/solutions.html

Mercury (Various Products): http://www.mercury.com/us/solutions/net/

Tonic WebLens: http://www.tonic.com/products/weblens.php

 

 

Did I missing any?  Have you had a chance to use any of these?  What are your comments\thoughts?

 

 

Comments (26)

  1. I currently haven’t had any experience with profilers, but I would like to start using them.

    Are these strictly alternatives to the CLR Profiler or are they supplementary? Which do you prefer and why? Which do you use on your personal projects?

    If you would rather not respond publicly, feel free to reply to element533NOSPAM@hotmail.com.

    Thanks!

  2. Robert Kozak says:

    I just recently looked at Red Gate ANTS Profiler: http://www.red-gate.com/code_profiling.htm and AutomatedQA AQTime: http://www.automatedqa.com/products/aqtime/index.asp

    The ANTS profiler was very simple to use but I didn’t feel it gave me enough information. AQTime gave lots of info but I didn’t find it that easy to use. I think I need to spend more time with it to fully realize its power.

    Thanks for the list. I’ll try out a few more and see how they compare.

    — Robert

  3. Mike Swaim says:

    Here’s my take on profilers:

    I couldn’t get Ant to work for me with an asp.net application. No errors, no data, no idea what went wrong.

    I really liked the DevPartner profiler, but my test code locked it up hard. I sent them a test case, and they identified the problem, but they had no idea how long a fix would take.

    My code threw exceptions in OptimizeIt that it didn’t normally throw. There wasn’t much interest in finding out why.

    My code threw the same errors in AQTime as OptimizeIt. I sent them a test case, and they fixed it. I ended up going with AQTime.

    AutomatedQA, Compuware and Red Gate were all interested in helping me with my problems. (I had email conversations with support techs from AutomatedQA and Compuware.) AQTime also does nonmanaged code, if that’s important to you. (I first used their profiler with Delphi.)

  4. We use the Red Gate Ants Profiler at work, it’s a beauty: per-line timings, lots of info if you dig for it. Their beta for the 2.0 framework has some great improvements as well, especially in the performance area; allowing your desktop app to run at near full speed during profiling. I highly recommend it. The 2.0 version comes bundled with a memory profiler as well.

  5. Luc Cluitmans says:

    Wouldn’t it be better to make this list a complete list of profilers? So, may I suggest including the CLR profiler (mentioned in your introduction) in the bulleted list?

    One other profiler that I didn’t see in your list is NProf (http://nprof.sourceforge.net/Site/SiteHomeNews.html). It may be not as advanced as the commercial profilers you listed (I never tried any of them, so I can’t compare), but, being freeware, it can be useful if you only occasionally need profiling.

  6. kh says:

    +1 to ANTS. I don’t have much experience with profilers but this tool helps me identify bottlenecks and memory holes quickly. I think having more than one profiler in your toolbox makes sense. The CLR Profiler is pretty psychedelic and always impresses the boss!

    BTW, there was an interesting thread about this recently on the DevelopMentor lists, and Ian Griffiths cited Rico Mariani (see link) regarding profiling inaccuracies. Any discussion on profiling should include caveats regarding what is actually being measured:

    http://discuss.develop.com/archives/wa.exe?A2=ind0503B&L=DOTNET-WINFORMS&P=R2339&I=-3

    kh

  7. Daniel says:

    GlowCode http://www.glowcode.com/summary.htm (evaluation version available)

    It’s very fast, but sometimes it doesnt seem to be to accurate especially if you profile small functions.

  8. Joshua Bair says:

    I like the NProf approach. The CLR Profiler could use some serious usability improvements.

    – Joshua

  9. Joe Cheng says:

    I use OptimizeIt because its CPU profiler uses periodic sampling, which is less accurate in some ways but lets the code run at close to full speed. Unfortunately, like all other CLR CPU profilers I’ve tried, it sometimes hangs.

  10. Stephen says:

    ANTS is very easy to use and does a pretty good job pointing out bottlenecks. I haven’t looked at 2.0 though.

    SciTech is pretty good. Usually it’s easy to see what is going on…

    -Stephen

  11. I have used both Rational Purify and Compuwares DevPartner, and would rate DevPartner higher than Purify. Simply because DevPartner gives me what I am looking for (leaks/live instances) and it does this fast, while Purify gives hell a lot of information and it makes it painfully slow.

  12. <p>&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.livejournal.com/users/mujtaba/21667.html&quot; target=&quot;_blank&quot;&gt;Néhány újdonság az ASMX2.0-ban&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://weblogs.asp.net/psteele/archive/2005/03

  13. Sathiya says:

    Do you have any freeware CLR profiler? If so, Can you list them?

  14. Peter Caven says:

    Your blog on CLR profilers provokes me to comment here on my experience with them.

    I’ve evaluated most of the profilers listed above and unfortunately I must say that this is an area where the available tools are surprisingly poor.

    The BEST profiler is the hotspot profiler that comes with the Framework SDK.

    It’s not fancy, requires some knowledge and preparation to use and has no UI at all – but it’s the only one that actually WORKS! It also comes as source so it’s customizable and flexible.

    The commercial tools that you mention have very nice feature sets, lots of buttons and knobs to fool with, etc… but they simply don’t work at all.

    Our application is a COM server with managed and unmanaged code (C++, C#, JScript,net). None of the commercial tools I evaluated could produce even a simple profile report of where time is spent in our application. The problems range from:

    1. Crashing the profiler on exceptions thrown in the application.

    2. Spewing out masses of useless information that is impossible to analyse.

    3. Hangs and deadlocks while profiling.

    4. Unreasonable restrictions such as being unable to profile because the runtime was already initialized by the application.

    5. Unable to attach to a running application to begin profiling.

    I have essentially given up on all the commercial tools. And to make matters even worse, this is the second time I’ve gone through this process. I performed the same evaluations (same tools, older versions) over a year ago – there has been absolutely no improvement in that time except that the same non-working profilers now have nicer UIs.

    I’m happy that I was able to discover these problems without wasting too much time and money on it, but it is still disappointing. The marketing promises made by the tool vendors do not match the capabilities of their products.

    You missed "nprof" at http://nprof.sourceforge.net

    It’s not useable either, but at least there’s some hope for it in the future.

  15. Ann Klatskin says:

    If I may, I would like to comment on Peter Craven’s (04/06/05) experience with commercial tools for application monitoring. I work for AVIcode (I’m the Technical Liaison), and I think that Intercept Studio (although not purely a profiler) pretty well addresses most of his issues.

    PC: " …with managed and unmanaged code… None of the commercial tools I evaluated could produce even a simple profile report of where time is spent in our application"

    AK: Although Intercept Studio will not monitor for exceptions in unmanaged code, its Performance Monitor will indicate how much time is spent in it. It also will graphically correlate related events from distributed transactions across the enterprise.

    PC: "Crashing the profiler on exceptions thrown in the application."

    AK: I have never seen Intercept Studio crash as a result of exceptions in an application. The agents will shut down if they encounter an error in the framework.

    PC: "Spewing out masses of useless information that is impossible to analyse."

    AK: Intercept Studio’s UI is designed to visually pinpoint exactly where problems have occurred in your code, although it provides the option to view details (values for local variables, member variables and function parameters) about other calls on the stack. It also hides Microsoft frames not directly related to the event unless you want to see them.

    PC: "Hangs and deadlocks while profiling"

    AK: Not anything I’ve ever seen with Intercept Studio

    PC: "Unreasonable restrictions such as being unable to profile because the runtime was already initialized by the application."

    AK: The only restriction that Intercept Studio has is that you can’t run a debugger at the same time that our agents are running.

    PC: "Unable to attach to a running application…"

    AK: Intercept Studio was designed to run in production environments, so it will attach to any .NET application on-the-fly

    I hope this information helps those who may be feeling a little turned off by commercial products.