分享方式:


Timing your C# code

I've gotten a couple of emails on my recent column telling me that they couldn't replicate my timings.

My first reaction was a sinking feeling in my stomach that I'd messed up the timings, but then a more rational idea occurred to me.

They were running from inside the IDE.

You see, whenever you do an F5 from inside the IDE, the IDE figures that you want to be able to debug your code, and therefore the JIT is put into debug mode, and you don't get the fully optimized path.

This happens even if you are building in a release comparison.

IIRC, if you do a CTRL-F5, you don't get this behavior, but it's generally a better idea to do any timings outside the IDE, as the IDE may have other impact on your timings.

Comments

  • Anonymous
    March 18, 2004
    I think you mean CTRL+F5, which is "Start without Debugging" - SHIFT+F5 is "Stop Debugging."
  • Anonymous
    March 18, 2004
    I remember the first time I was trying to time some worst case exception handling code. I was horrified at how long it took to do some "simple" things.

    Fortunately, after thinking about it for a while I ran it outside of the IDE and noticed the several orders of magnitude difference in timings.

  • Anonymous
    March 30, 2004
    Don't I remember that the license agreement for Visual Studio prohibits publishing benchmark results? That struck me as a bizarre (and probably non-enforceable) provision. What came over Microsoft's lawyers that day?
  • Anonymous
    May 08, 2004
    Timing your C# code
  • Anonymous
    May 08, 2004
    Timing your C# code