title: ASP.NET MVC 3 Razor performance
body: <p><strong>Important Update: See update 5 at the bottom there is no performance issue in asp.net mvc 3, this is a benchmark issue</strong></p>
  
  <p>I've made a simple hello world project in asp.net mvc2,3 aspx and 3 razor and benchmarked them. What I see is:</p>
  
  <pre><code>System                  Requests per second
  -------------------------------------------
  asp.net mvc 2 ASPX                     4200
  asp.net mvc 3 Beta 1 ASPX              3200
  asp.net mvc 3 Beta 1 Razor             1700
  </code></pre>
  
  <p>What's wrong with razor, it's so slow?</p>
  
  <p><strong>Update:</strong>
  I've redone the test. All 4 test virtual directories uses the same .net 4 integrated mode app pool. All projects are done with add new empty x project and adding 1 page with 1 line text and with no code. all sites are compiled in release mode. My system is windows 7, 4 gb i7 4 cores. I've run the test 2 times to warm up iis and these are second run results. apache bench parameters : ab -n100000 -c1000 
  results:</p>
  
  <pre><code>System         Requests per second   CPU Utilization
  ----------------------------------------------------
  asp.net 4                     4780               43%
  mcv 2                         4322               58%
  mvc 3 beta 1 aspx             2324               54%
  mvc 3 beta 1 razor            1615               54%
  </code></pre>
  
  <p><strong>Update 2</strong> Scott Guthrie answered in his blog:</p>
  
  <blockquote>
    <p><em>We haven't fully optimized MVC3 yet (there is usually a lot of cache tuning we do).  We expect razor to be the same performance as the .aspx view engine before it is finally released.</em></p>
  </blockquote>
  
  <pre><code>System         Requests per second   CPU Utilization
  ----------------------------------------------------
  mvc 3 rc1 razor               1960               54%
  mvc 3 rc2 razor               2187               54%
  mvc 3 rc2 aspx                4014               58%
  </code></pre>
  
  <p><strong>Update 5</strong> all tests done in release mode but, the problem was <code>debug="true"</code> in my web.config file (that also effects release builds), after change it to false, issue fixed. And it's interesting how it's effecting only razor templating at this scale. This should be in our mind on deployments.</p>
  
  <pre><code>System         Requests per second   CPU Utilization
  ----------------------------------------------------
  mvc 3 rc2 razor               3940               58%
  mvc 3 rc2 aspx                4100               58%
  </code></pre>
  
  <p>Thanks to asp.net mvc team, excellent job!</p>