0

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

从下面的简单片段来看,它似乎更慢。使用 .NET 4.0 大约需要 630 毫秒,使用 .NET 3.5 SP1 大约需要 530 毫秒。

你得到什么结果?有什么建议么?我正在考虑将我的应用程序转换为 .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();
4

2 回答 2

6

此问题已报告并已修复

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

于 2012-08-19T12:57:09.273 回答
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 编辑的代码也更好。

于 2012-08-20T06:03:39.057 回答