void Main() { double elapsed1 ; double elapsed2 ; var iterations = 1e7; using (var timedTask = new TimedTask("Method1")) {//Write your code here and measure its performance for (var i = 0; i < iterations; i++) { Method1_DoStuff(); } elapsed1 = timedTask.ElapsedMs(); } using (var timedTask = new TimedTask("Method2")) {//Write your code here and measure its performance for (var i = 0; i < iterations; i++) { Method2_DoStuff(); } elapsed2 = timedTask.ElapsedMs(); } if (elapsed1 < elapsed2) String.Format("method1 is {0:###,###.##}x faster than method 1", elapsed2/elapsed1, elapsed1, elapsed2).Dump(); else String.Format("method2 is {0:###,###.##}x faster than method 2", elapsed1/elapsed2, elapsed1, elapsed2).Dump(); } string Method1_DoStuff() { var x = "hello"; x = x + " pretty"; x = x + " world"; return x; } private static string _field; string Method2_DoStuff() { if (_field==null) _field = "hello pretty world"; return _field; } class TimedTask : IDisposable { string _taskName; Stopwatch sw; public TimedTask(string taskName) { _taskName = taskName; sw = new Stopwatch(); sw.Start(); } public double ElapsedMs() { return sw.Elapsed.TotalMilliseconds; } public void Dispose() { sw.Stop(); string.Concat("completed ", _taskName, " in ", (sw.Elapsed.Ticks / 10000.0).ToString("###,##0.00 ms")).Dump(); } }
The result looks something like this:
completed Method1 in 559.24 ms completed Method2 in 45.65 ms method2 is 12.25x faster than method 2