No, to time a procedure execution time, you don't need a timer at all. Instead, you need a stopwatch: http://msdn.microsoft.com/en-us/library/system.diagnostics.stopwatch.aspx
Also, correct timing needs some understanding of how JIT compilation works: http://en.wikipedia.org/wiki/Just-in-time_compilation
You need to exclude JIT time form execution time. If you time some method which was never called, or uses types or methods that were not yet used during run time, some considerable amount of time will be spend for JIT compilation. You will need to avoid such fresh calls. This is fairly easy though: just time some fragment of code only when it is repeated second time.