6

Microsoft make this piece of software called "Visual Studio 2008 Professional". I have found that there doesn't appear to be an application performance profiler or something similar in it, making it seem not so "professional" to me.

If Microsoft don't include a profiler, what are your third party options for time profiling for Visual Studio 2008? Free would be preferable, as this is for uni student purposes :P

Brock Woolf
  • 46,656
  • 50
  • 121
  • 144

8 Answers8

6

There are a couple of free profilers, not as complete or polished as the commercial ones, but they can definately help a lot:

Eqatec - This was designed for Windows CE, but works just fine for normal applications.

Soft Prodigy Profile Sharp - This is actually an open source project written in c#, so you can tinker with it if you want.

Kris Erickson
  • 33,454
  • 26
  • 120
  • 175
4

Personally, I use the Red Gate profiler.

Others swear by the JetBrains one.

Those seem to be the options, and there isn't much between them.

Alun Harford
  • 3,086
  • 18
  • 25
3

I use JetBrains dotTrace profiler. This is a commercial profiler. (Full disclosure: I receive a free licence as an MVP. It has proved very useful though.)

There's also the free CLR Profiler for .NET 2.0 and an article explaining how to use it.

Jon Skeet
  • 1,421,763
  • 867
  • 9,128
  • 9,194
  • 1
    Note that the free one is actually very good for *memory* allocation tracing but straight perf analysis it trails the other systems. No free ones I know of support mixed mode profiling or sampling rather than instrumentation. AQTime and the Team system one both do this – ShuggyCoUk Feb 22 '09 at 23:37
  • I just tried that dotTrace demo. I was hoping it wouldn't be what I expected, but it was. It floods you with beautifully presented stuff that doesn't matter. What does matter is that it spends well over 90% of it's time in the call to `myBitmap.SetPixel`, and the small remainder in various places like intersecting a ray with a sphere, as easily shown with not many pauses. I cruised all around in DT, but nothing in there told me what the pauses told me. – Mike Dunlavey Oct 19 '11 at 20:45
  • @MikeDunlavey: I don't really have enough context to understand that comment, but dotTrace has certainly helped me find bottlenecks in Noda Time... – Jon Skeet Oct 19 '11 at 20:47
2

Download the VS 2008 stand alone command line profiler http://www.microsoft.com/downloads/details.aspx?familyid=fd02c7d6-5306-41f2-a1be-b7dcb74c9c0b&displaylang=en

Gary
  • 21
  • 1
  • But "A full installation of Visual Studio 2008 with profiling support must be used to view the generated performance reports" – Julien N Oct 06 '11 at 16:06
2

I use the Team System Edition. That comes with a profiler which is pretty good. There are other options out there:

Hope that helps. Note: None of them are free.

Happy profiling :)

dirkgently
  • 108,024
  • 16
  • 131
  • 187
1

RedGate ANTS profiler is not that expensive, and does the job.

dmajkic
  • 3,448
  • 1
  • 18
  • 24
0

I use JetBrain's dotTrace and it works quite well.

Otávio Décio
  • 73,752
  • 17
  • 161
  • 228
0

same answer as:

Re-edited: You asked what your options were. If your heart is set on profiling, then look for a profiler.

On the other hand, if you actually have a performance problem to find, the simple method works as well or better than nearly every profiler. I say nearly every, because in some profilers you can actually tease out what you need to know, which is the time-cost attributable to individual instructions, especially call instructions.

The time-cost of an instruction is the amount of time that would be saved if the instruction could be removed, and a good estimate of it is the fraction of call stack samples containing it. You don't need to estimate that fraction with high precision. If the instruction is on 5 out of 10 samples, it's cost is probably somewhere in the range 45% to 55%. No matter - if you could get rid of it, you would save its cost.

So finding performance problems is not hard. Just take a number of call stack samples, collect the set of instructions on those samples, and rank the instructions by the fraction of samples containing them. Among the high-fraction instructions are some that you could optimize away, and you don't have to guess where they are.

I'm simplifying somewhat, because often it is helpful to examine more state information than just the call stack, to see if some work being done is really necessary. But I hope the point is made.

People express doubt that it could work in the presence of recursion, or work on large programs. A little thought (and experimentation) shows those objections do not hold water.

Community
  • 1
  • 1
Mike Dunlavey
  • 40,059
  • 14
  • 91
  • 135