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

はい。Net4.0は3.5よりも効率的です。私の場合、ループ内に指数関数を持つ数値アルゴリズムがありました。約2倍のスピードアップを決定論的に再現することができました。主な勝利はJITではなくCRTから来ているようです。8.0 / 3.5 CRTはx87浮動小数点命令を使用していましたが、10.0 /4.0CRTはSSEを使用しています。JITは、Log/Log10およびExp呼び出しにCRTを使用します。JIT化されたコードの方が優れていたものの、Cランタイムで使用されるSSE命令が勝利の主な原因のようです。

于 2012-08-20T06:03:39.057 に答える