title: Why ElapsedTicks of Stopwatch in C# is collapsed?
body: <p>I want to know why the <i>ElapsedTicks</i> value(s) difference is changing just because of changing the <i>region</i>.</p>
  
  <h2>Code</h2>
  
  <pre><code> Stopwatch timer = new Stopwatch( );
   #region "TimeCheck1"
   timer.Start( );
   string s1 = "HelloWorld";
   int length = s1.Length;
   int subLength = length / 2;
   string sA = s1.Substring(0, subLength);
   string sB = s1.Substring(subLength, subLength);
   timer.Stop( );
   Console.WriteLine("String: " + s1 + " Sub1: " + sA + " Sub2: " + sB + " Timer: " + timer.ElapsedTicks);
   #endregion "TimeCheck1"
  
   #region "TimeCheck2"
   timer.Start( );
   string s2 = "HelloWorld";
   int length2 = s2.Length;
   int subLength2 = length2 / 2;
   string s2A = subStr(s2, 0, subLength2);
   string s2B = subStr(s2, subLength2, subLength2);
   timer.Stop( );
   Console.WriteLine("String: " + s2 + " Sub1: " + s2A + " Sub2: " + s2B + " Timer: " + timer.ElapsedTicks);
   #endregion "TimeCheck2"
  </code></pre>
  
  <h2>Output 1</h2>
  
  <pre><code>String: HelloWorld Sub1: Hello Sub2: World Timer: 12
  String: HelloWorld Sub1: Hello Sub2: World Timer: 639
  </code></pre>
  
  <h2>Output 2</h2>
  
  after interchanging regions TimeCheck1 and TimeCheck2
  
  <pre><code>String: HelloWorld Sub1: Hello Sub2: World Timer: 826
  String: HelloWorld Sub1: Hello Sub2: World Timer: 828
  </code></pre>
  
  <p>Why this difference occurs? I'm too confused here.</p>
  
  <h2>Edit ( I hope, this method is not an issue)</h2>
  
  <pre><code>private static string subStr( string str, int index, int len ) {
      string sub = "";
      int c = index;
      len = index + len;
      while( c != len ) {
          sub += str[ c ];
          c++;
      }
      return sub;
  }
  </code></pre>