.NET Profilers Suck

vs, net comments edit

I’ve heard that the CR_Documentor plugin is a little sluggish on some folks’ machines so I decided to run a profiler on it and see what’s slowing me down.

The profilers out there for .NET suck. A lot.

The problem with the majority of them is that they only profile executables. You can’t just profile a satellite assembly that you’ve written that gets used by an executable, and you can’t just attach to a process that’s already running and using your assembly.

Well, as an add-in, my assembly’s technically running under Visual Studio itself - devenv.exe. So there’s your host app…

I tried DevPartner Profiler Community Edition. It blue-screened my box twice before I gave up. I never successfully even got VS started up to be profiled.

I tried nprof, the Red-Gate ANTS profiler, and the CLR Profiler. No luck.

DevExpress tech support recommended AQtime, since that’s what they use. It seemed the best of the bunch, being able to attach to existing running processes and select specific assemblies to profile, but it wouldn’t allow me to attach to an existing running instance of Visual Studio, nor was it able to start one up for me (I got a bunch of Access Violations and VS would puke). So the best of the bunch (that I tried out) never worked.

Long and short of it is, I never got the thing profiled. I’m thinking I may have to add some sort of trace-style instrumentation and/or performance counters to get this done. Hmmm.

In other news, I made a few Amazon purchases today: C++ Primer, 4th Ed. (I need to re-learn C++… it’s been too long); Joel On Software; and Red Dwarf, series 5 and 6 (can’t get enough of the Red Dwarf).

I’ve also made quite a bit of progress in my pMachine-to-dasBlog conversion program and may try to transfer over in the reasonably near future. Of course, after having experienced what I have thus far with dasBlog, I can see that there’s some work I need to do on that in order to accommdate the stuff I’d like to do in a reasonable fashion (for example, the templates being of the “macro substitution” fashion need to be fixed to actually work like master pages so I can design them using real controls and not just string replacement… not to mention there are far too many moving parts behind the scenes there for the amount of stuff it’s actually doing…). We’ll see.