Hi,
I'm having a bit of a problem working out where I'm losing performance in some test app in the Xbox 360. My testing revolves around doing some Gaussian blurs on ResolveTexture2Ds and quite a few calls to ResolveBackBuffer to grab the images back to texture and seeing how much I can push this before hitting the limits of the 360.
At the moment I'm logging the time taken for the Draw and Update functions by using a Stopwatch (from System.Diagnostics) to see how long the code takes but am running into problems. My output is coming from
| stopwatch.Elapsed.TotalMilliseconds.ToString() |
but when I push up the number of blurs I'm doing each Draw I quickly hit a drop from 60 to 30fps but my stopwatch values don't seem to show why. When I drop to 30fps I get a double return from my Update counter (I understand why as the 360 is catching up to the 60Hz Update schedule so has to run it twice) and these are both under 0.015ms (testing and doing very little here) but the Draw stopwatch is only returning 1.8ms, which doesn't seem to vibe with the need to drop to 30fps due to long draw time.
The on-screen output is as I expect and doing a remote Perf mon I find that GC is running about once every 10-15 secs and recovering about a meg of assorted. Looking through the heap viewer there doesn't seem to be much jumping out at me (then again I'm still quite new to all this) and if it was a GC issue I'd expect there to be a framerate drop to coincide rather than this constant drop to half-framerate.
Could any of you experienced chaps give me some suggestions to what might be going wrong or what tools I should use to find the issue. From what I've read the stopwatch should be giving correct values but that doesn't fit with the output I'm getting.