繁体   English   中英

.NET 2.0与.NET 4.0运行时分配性能

[英].NET 2.0 vs .NET 4.0 runtime allocation performance

从.NET 3.5(.NET 2.0运行时)迁移到NET 4.0之后,当分配更大的内存块时,我们会发现性能下降。 请查看以下测试代码。 这是一个简约的测试程序,代表了我们正在使用的真实场景。 谁能解释.NET 2.0和4.0运行时之间的显着差异,该差异慢得多? 重现步骤:

  1. 将代码导入C#控制台应用程序。
  2. 将平台目标设置为x64。
  3. 以.NET 3.5为目标并进行发布。
  4. 运行EXE(不要从IDE运行!),然后在控制台中键入“ test”。
  5. 等待结果。
  6. 重复.NET 4.0。

谢谢。

亚历克斯

    class Program {

    static DateTime firstdate, lastdate;

    const int CHUNKSIZE =  10 * 1024 * 1024; //  10 MB.
    const int TRIALS = 10000;

    static void startmeasure() {

        firstdate = DateTime.Now;

    }

    static void stopmeasure() {

        lastdate = DateTime.Now;

        var duration = lastdate.Subtract(firstdate);

        Console.WriteLine("Test duration:" + duration.TotalSeconds.ToString());

    }

    static void Main(string[] args) {

        string input;

        do {

            input = Console.ReadLine();

            switch (input) {

                case "test":

                    handletest();

                    break;

            }

        } while (input != "exit");

    }

    static void handletest() {

        startmeasure();

        byte[] data;

        for (int i = 0; i < TRIALS; i++) {

            data = getdata(CHUNKSIZE);

        }

        stopmeasure();

    }

    static byte[] getdata(int size) {

        return new byte[size];

    }

}

正如汉斯指出的那样,答案在于.NET 2和.NET 4优化快速内存分配和早期对象回收的不同方式。 在这种测试代码中看到.NET 4性能较慢并不意味着它在实际应用程序中的性能会降低,因此这只是一种特殊情况。

一种。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM