.NET 4.0 vs 3.5性能

时间:2012-08-19 11:49:58

标签: c# .net performance

有人知道.NET 4是否更有效吗?

从以下简单的代码片段来看,它似乎更慢。使用.NET 4.0花了大约630ms,使用.NET 3.5 SP1花了大约530ms。

你得到了什么结果?有什么建议?我正在考虑将我的应用程序转换为.NET 4.0,但这些结果让我失望。

        Stopwatch sw = new Stopwatch();
        sw.Start();

        for (int i = 0; i <= 1000000; i++)
        {
            string s = "asdfx54545454545454545454545454545454545454545454545454545454545454545454545454adsf4asdf";
            int j = s.IndexOf("asdf");
            s.IndexOf("asdf", j);


            s = s + "zxcv";
            s = s + "gtjiortege";
        }

        sw.Stop();
        Console.WriteLine(sw.ElapsedMilliseconds);

        Console.ReadLine();

2 个答案:

答案 0 :(得分:6)

此问题为reportedfixed

如果您不需要特定于区域性的比较,则解决方法是将Oridinal指定为StringComparison类型,而不是安装此修补程序。

答案 1 :(得分:0)

是.Net 4.0比3.5更有效。在我的例子中,我有一个在循环中具有指数函数的数值算法。我能够确定性地再现~2倍的速度。看起来主要的胜利来自CRT,而不是JIT。 8.0 / 3.5 CRT使用x87浮点指令,但10.0 / 4.0 CRT使用SSE。 JIT使用CRT进行Log / Log10和Exp调用。看起来C运行时使用的SSE指令是胜利的主要来源,尽管JIT编码也更好。