title: Static Vs Instance Method Performance C#
body: <p>I have few global methods declared in public class in my ASP.NET web application.</p>
  
  <p>I have habit of declaring all global methods in public class in following format</p>
  
  <pre><code>public static string MethodName(parameters) { }
  </code></pre>
  
  <p>I want to know how it would impact on performance point of view?</p>
  
  <ol>
  <li>Which one is better? Static Method or Non-Static Method?</li>
  <li>Reason why it is better?</li>
  </ol>
  
  <p><a href="http://bytes.com/topic/c-sharp/answers/231701-static-vs-non-static-function-performance#post947244" rel="noreferrer">http://bytes.com/topic/c-sharp/answers/231701-static-vs-non-static-function-performance#post947244</a> states:</p>
  
  <blockquote>
    <p>because, static methods are using locks to be Thread-safe. The always
    do internally a Monitor.Enter() and Monitor.exit() to ensure
    Thread-safety.</p>
  </blockquote>
  
  <p>While <a href="http://dotnetperls.com/static-method" rel="noreferrer">http://dotnetperls.com/static-method</a> states:</p>
  
  <blockquote>
    <p>static methods are normally faster to invoke on the call stack than
    instance methods. There are several reasons for this in the C#
    programming language. Instance methods actually use the 'this'
    instance pointer as the first parameter, so an instance method will
    always have that overhead. Instance methods are also implemented with
    the callvirt instruction in the intermediate language, which imposes a
    slight overhead. Please note that changing your methods to static
    methods is unlikely to help much on ambitious performance goals, but
    it can help a tiny bit and possibly lead to further reductions.</p>
  </blockquote>
  
  <p>I am little confused which one to use?</p>