In applications that require responsiveness it's sometimes hard, while in the middle of development to test what implementation of some code is faster.
Below I've created an example of an easy way to time some action or group of actions within a method to quickly determine how long it would take to do it one way or another.
Below I've created an example of an easy way to time some action or group of actions within a method to quickly determine how long it would take to do it one way or another.
public void SomeMethodIAmWorkingOn()
{
TimeAction(
() =>
{
for (int i = 0; i < 100; i++)
SomeMethodIAmTiming();
SomeNextStep();
},
"Timing method SomeMethodIAmTiming 100 times...");
}
public static long TimeAction(
System.Action action,
string debugNote)
{
long time = TimeAction(action);
System.Diagnostics.Debug.WriteLine(
string.Format(
"TimeAction:{0}ms, NOTE: {1},",
time,
debugNote)
);
return time;
}
public static long TimeAction(
System.Action action)
{
Stopwatch watch = Stopwatch.StartNew();
action();
watch.Stop();
return watch.ElapsedMilliseconds;
}
Comments
whoops - Thanks for the suggested update...
Lambda, not lamda. ;)