当前位置:  开发笔记 > 编程语言 > 正文

ASP.NET MVC URL生成性能

如何解决《ASP.NETMVCURL生成性能》经验,为你挑选了0个好方法。

ASP.NET MVC的一个小基准.查看页面代码:

    public string Bechmark(Func 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
"; }

查看代码:

<%= Bechmark(() => Url.Action("Login", "Account")) %>

<%= Bechmark(() => Url.Action("Login", "Account", new {username="bla", password="bla2", returnurl="blabla32", rememberme=false} )) %>

<%= Bechmark(() => Html.BuildUrlFromExpression(a=>a.ChangePassword("bla", "bla", "ya")) ) %>

使用ASP.NET MVC Beta在默认新项目模板上的典型Core2笔记本上运行此命令会产生以下结果:

38 ms,每个链接0,038 ms

120 ms,每个链接0,12 ms

54 ms,每个链接0,054 ms

在具有大约10个控制器的生产项目上运行相同的基准测试,这些控制器总共包含大约100个方法和30个路由表条目,对于基于表达式的方法,性能大大降低:

31 ms,每个链接0,031 ms

每个链路112毫秒,0,112毫秒

每个链路450毫秒,0.45毫秒

我们使用这种方法(可维护性)并进行一些性能基准测试,这大大降低了网站的性能 - 页面快速包含大约30个或更多这样的链接,这意味着单个页面上10ms的额外开销.即使每个URL 0.112ms也只有4ms的纯CPU开销.

值得注意的是,MVC Preview 3和Beta(昨天发布)之间所有三个URL生成调用的性能提高了5倍.

Stack Overflow应该由相同的框架提供支持,你们如何解决这个扩展问题?首页的自由缓存(许多链接)和预渲染控件?

ASP.NET MVC中的任何其他生产网站都存在性能问题或一些好的提示?

推荐阅读
mobiledu2402851373
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有