tags:

views:

102

answers:

3

i like to set timer for calculating execution time in c# for particular process in my execution. how can i do this

+7  A: 

You don't generally use a timer for this - you use a Stopwatch.

Stopwatch sw = Stopwatch.StartNew();
// Do work
sw.Stop();
TimeSpan elapsedTime = sw.Elapsed;

If you're performing benchmarking of something relatively fast, it's worth doing it many, many times so that the time taken is significant (I usually go for 5-30 seconds). That's not always feasible, admittedly - and there are many more subtleties which affect real world performance (such as cache hits/misses) which micro-benchmarking often misses out on.

Basically, be careful - but Stopwatch is probably the best starting point in many cases.

Jon Skeet
+1 for the Stopwatch.StartNew(). Didn't know about that.
Joop
"You don't generally" vs "You generally don't". Enlighten me: are both correct grammar?
Martinho Fernandes
@Martinho: I *think* both are acceptable. It's possible that one is preferred over the other, although I wouldn't know which :)
Jon Skeet
+2  A: 

You can use System.Diagnostics.Stopwatch to do what you want.

Adrian Faciu
+1 for listing the reference.
John M
A: 

You can use a Timer and attach an action to the Elapsed event. For instance you can abort your thread... hmm if you are not affraid of the consequences... Actually you can do that if you want to set a timeout to your process for instance.

If it's just for monitoring, Stopwatch just fits your needs

PierrOz
Interesting read on aborting threads: http://blogs.msdn.com/ericlippert/archive/2010/02/22/should-i-specify-a-timeout.aspx and http://blogs.msdn.com/ericlippert/archive/2010/02/25/careful-with-that-axe-part-two-what-about-exceptions.aspx
Martinho Fernandes