title: Performance of expression trees
body: <p>My current understanding is that 'hard coded' code like this:</p>
  
  <pre><code>public int Add(int x, int y) {return x + y;}
  </code></pre>
  
  <p>will always perform better than expression tree code like this:</p>
  
  <pre><code>Expression&lt;Func&lt;int, int, int&gt;&gt; add = (x, y) =&gt; x + y; 
  var result = add.Compile()(2, 3);
  
  var x = Expression.Parameter(typeof(int)); 
  var y = Expression.Parameter(typeof(int)); 
  return (Expression.Lambda(Expression.Add(x, y), x, y).
      Compile() as Func&lt;int, int, int&gt;)(2, 3);
  </code></pre>
  
  <p>as the compiler has more information and can spend more effort on optimizing the code if you compile it at compile time. Is this generally true?</p>