This question already has an answer here:
-
Is DateTime.Now the best way to measure a function's performance?
15 answers
Obviously I can do and DateTime.Now.After
- DateTime.Now.Before
but there must be something more sophisticated.
Any tips appreciated.
System.Environment.TickCount and the System.Diagnostics.Stopwatch class are two that work well for finer resolution and straightforward usage.
See Also:
- Is DateTime.Now the best way to measure a function’s performance?
- High resolution timer in .NET
- Environment.TickCount vs DateTime.Now
- What’s the best way to benchmark programs in Windows?
I would definitely advise you to have a look at System.Diagnostics.Stopwatch
And when I looked around for more about Stopwatch I found this site;
Beware of the stopwatch
There mentioned another possibility
Process.TotalProcessorTime
Use a Profiler
Your approach will work nevertheless, but if you are looking for more sophisticated approaches. I'd suggest using a C# Profiler.
The advantages they have is:
- You can even get a statement level
breakup
- No changes required in your codebase
- Instrumentions generally have very less overhead, hence very accurate results can be obtained.
There are many available open-source as well.
Tickcount is good, however i suggest running it 100 or 1000 times, and calculating an average.
Not only makes it more measurable - in case of really fast/short functions, but helps dealing with some one-off effects caused by the overhead.