返回视图的哪种方法最明智的表现?

时间:2017-02-03 17:46:01

标签: c# asp.net-mvc

将视图返回到Controller Action的最佳方法是什么?在性能,易测试性,优化等方面。

return View();

return View("[ActionName]");

然后

return View([model]);

VS

return View("[ActionName]",[model]);

1 个答案:

答案 0 :(得分:1)

所以我运行了一些基准测试,这就是我所得到的:

    readonly Stopwatch sw = new Stopwatch();

    public void Benchmark()
    {
        var t1 = Test(View);
        var t2 = Test(() => View("[ActionName]"));
        var t4 = Test(() => View(new Model()));
        var t3 = Test(() => View("[ActionName]", new Model()));

        string result = $"{t1} - {t2} - {t3} - {t4}";
        //Results:
        //4466 - 4856 - 6969 - 6977
        //4551 - 4986 - 7070 - 7056
        //5181 - 5263 - 7142 - 7864

    }

    public long Test(Func<ViewResult> f)
    {
        sw.Start();
        for (int i = 0; i < 100000000; i++)
        { var x = f(); }

        sw.Stop();
        long t = sw.ElapsedMilliseconds;
        sw.Reset();
        return t;
    }

所以前两个看起来要快一点......然而,差别是微不足道的。使用最适合您的方法。