ASP.NET MVC的一點基準。的ViewPage代碼:ASP.NET MVC URL生成性能
public string Bechmark(Func<string> url)
{
var s = new Stopwatch();
var n = 1000;
s.Reset();
s.Start();
for (int i = 0; i < n; i++)
{
var u = url();
}
s.Stop();
return s.ElapsedMilliseconds + " ms, " + ((s.ElapsedMilliseconds)/(float)n) + " ms per link<br/>";
}
查看代碼:
<%= Bechmark(() => Url.Action("Login", "Account")) %>
<%= Bechmark(() => Url.Action("Login", "Account", new {username="bla", password="bla2", returnurl="blabla32", rememberme=false})) %>
<%= Bechmark(() => Html.BuildUrlFromExpression<AccountController>(a=>a.ChangePassword("bla", "bla", "ya"))) %>
上與ASP.NET MVC Beta版默認的新項目模板典型的酷睿2筆記本上運行這會產生以下結果:
38 ms,每個鏈接0,038 ms
120 ms,每個鏈接0,12 ms
54毫秒,每鏈路
用約10個控制器具有所有在所有周圍100的方法和30個路由表條目運行在生產項目相同的基準0054毫秒,則性能降低用於基於表達式的方法:
31毫秒,0031毫秒每鏈路
112毫秒,0112毫秒每鏈路
450毫秒,每鏈路
.45毫秒
我們使用這種方法很多(可維護性)和做一些性能基準測試,這大大降低了網站的性能 - 網頁很快包含大約30個或更多的這樣的鏈接,這意味着一個單一的額外開銷10毫秒頁。即使每個URL有0.112ms,純CPU的開銷也只有4ms。
應當指出的是,MVC第三個預覽版和Beta之間的所有三個URL生成調用(昨天發佈)的性能得到了由5
堆棧溢出的因素是提高據稱由同一框架內,如何供電你們有沒有解決這個縮放問題?首頁的自由緩存(大量鏈接)和預渲染的控件?
在ASP.NET MVC中的任何其他生產網站與性能問題或一些好的提示?
這裏是一個你可能會覺得有用的鏈接:http://blog.whiletrue.com/2009/04/aspnet-mvc-performance/ – Nik 2009-05-16 13:37:46
@Nik:其實我是那個演講的作者,很好...是的。:) – rudib 2009-05-18 19:46:13