OK, maybe this should go in the basic section - I'm not sure, but it's got me befuddled
How can one best profile in MSVC? I've got the pro edition (I think... it's the $800 version) of MSVC .NET 2003, and I thought it had a built in profiler, but I can't find it anywhere. There are some older references on the 'net to a profiler in MSVC, but maybe it's been removed? (I see in the help for compiler options "The /PROFILE linker option has been removed. If you are using a third party profiler that needs /PROFILE, you should instead use /FIXED:NO. In this version, the linker will still accept /PROFILE as a synonym for /FIXED:NO. ")
So, if MSVC does not have a built-in profiler, does anyone here have anything they're happy with? My engine is full software, so something that can show me the hotspots would be nice - I know I can do simple timings with a GetTickCount function, but that has a fairly course resolution.
A few years ago, I used Intel's VTune, but it's expensive ($699), and kind of cumbersome (IIRC, once I installed it, it changed all kinds of settings in MSVC in irritating ways, and even uninstalling it left significant remnants/aftereffects). They have an 'evaluation' version, but they don't list on their site what the limitations of that version are (i.e. - is it cut-down features, time limit, # of uses limit, no commercial usage, etc)?
Anybody got any good solutions, whether specific products or just techniques?
Amd code analyst. Free and works great. Not as full featured as vtune, but it's what I use.
I used custom profiling, I find normal profiling quite hard to use practically in games... it creates to much junk data... and if you have a heavy game it might not run in appropriate speed to give accurate results...
So I wrote a profiling class and I just add it to the parts I want to examine... My profiler is almost the same as that in Game Programming Gems and is built on a singelton profiling manager and a profiling class... You just create an instance of the profiling class in the function you want to time...
I can ask the profiling manager and get the results in realtime... (a bit slower than normal speed) and I can print the results directly to the screen during the game to examine it during play... (I think I have some kind of tree structure too to be able to see which function called which)
But during the development of our game we have not used this...
profileing and optimizations takes to much effort and time and its not worth it!!! Its better to actually make the game first...
Second vote for CodeAnalyst. It rocks.
And if you aren't using an AMD processor, YOU SHOULD BE...
Well, I largely resolved my performance issues without turning to a profiler. I now get around 22-25 fps (up from ~12-13) on an 800 mhz machine. This means that a 500 mhz machine (probably a reasonable low-end target) should get about 15 fps, which is adequate for my puzzle game.
Found a dumb debug thing I had left on in release builds, added a simple and crude, yet effective dirty rectangle system, and a few other things.
Scrounge for older copies of VTune (especially if you're a non AMD type)... as far back as 4.0 will work nicely on WinXP, and it's extremely useful for what you're likely to pay... (if you can find it).