Monday, November 26, 2007

Time difference logger

Did you ever have to log time taken by some chunk of code? I hate writing log statements every where to get time difference - so I came up with this :

   1: using System;
   2: using System.Collections.Generic;
   3: using System.Linq;
   4: using System.Text;
   5: using System.Threading;
   6:  
   7: namespace TimeLogger
   8: {
   9:     class Program
  10:     {
  11:         static void Main(string[] args)
  12:         {
  13:             using (TimeLogger tl = new TimeLogger("sleeper"))
  14:             {
  15:                 Thread.Sleep(3000);
  16:             }
  17:         }
  18:     }
  19: }


   1: using System;
   2: using System.Collections.Generic;
   3: using System.Linq;
   4: using System.Text;
   5: using System.Diagnostics;
   6:  
   7: namespace TimeLogger
   8: {
   9:     public sealed class TimeLogger:IDisposable
  10:     {
  11:         private Stopwatch sw;
  12:         private string codeDescription = string.Empty;
  13:         public TimeLogger()
  14:         {
  15:             this.sw = Stopwatch.StartNew();
  16:         }
  17:         public TimeLogger(string codeDescription)
  18:         {
  19:             this.codeDescription = codeDescription;
  20:             this.sw = Stopwatch.StartNew();
  21:         }
  22:  
  23:         void IDisposable.Dispose()
  24:         {
  25:             sw.Stop();
  26:             if(string.IsNullOrEmpty(codeDescription))
  27:                 Console.WriteLine("Time taken by = {0} ms", sw.ElapsedMilliseconds);
  28:             Console.WriteLine("Time taken by {0} = {1} ms",codeDescription, sw.ElapsedMilliseconds);
  29:         }
  30:     }
  31: }

What do you think?

No comments: