The problem is that Windows is a multitasking environment, and there is generally a fair amount going on in the background, which can affect your results. And added to that the speed of modern processors and the .NET JIT compiler, it gets difficult to get a "good" result from a single execution. In order to get "reliable" numbers, you need to time your function for a large number of iterations, and probably run the test several times.
I generally run for maybe 100,000 iterations, but sometimes a smaller number is sufficient. Have a look at this:
Counting Lines in a String[
^] - it's all about the timings and may give you a clue or two.