当前位置: 代码迷 >> 综合 >> .NET CLR对class和struct的优化有多少?这篇测试告诉你!
  详细解决方案

.NET CLR对class和struct的优化有多少?这篇测试告诉你!

热度:63   发布时间:2024-02-12 10:54:57.0

测试环境

  • SDK:5.0.100-preview.7.20366.6
  • CPU:Intel Core i7 - 6700
  • Any CPU 
  • Release

测试代码

using System;
using System.Diagnostics;while (true)
{Test("变量", () =>{var d = 555;for (int i = 0; i < 100000000; i++){d += 3;d -= 7;d *= 12;d /= 6;d /= 2;d /= 4;}return d;});Test("结构", () =>{var data = new A();data.Data = 555;for (int i = 0; i < 100000000; i++){data.Data += 3;data.Data -= 7;data.Data *= 12;data.Data /= 6;data.Data /= 2;data.Data /= 4;}return data.Data;});Test("类", () =>{var data = new B();data.Data = 555;for (int i = 0; i < 100000000; i++){data.Data += 3;data.Data -= 7;data.Data *= 12;data.Data /= 6;data.Data /= 2;data.Data /= 4;}return data.Data;});
}static void Test(string name, Func<object> action)
{var sw = new Stopwatch();sw.Start();var result = action();var ms = sw.ElapsedMilliseconds;Console.WriteLine(name + ":" + result + " " + ms + "ms");
}internal struct B
{public int Data;
}internal class A
{public int Data { get; set; }
}

测试结果


变量:-1 461ms
结构:-1 664ms
类:-1 994ms


变量:-1 464ms
结构:-1 647ms
类:-1 993ms

变量:-1 473ms
结构:-1 686ms
类:-1 1029ms

……

 

耗时: 变量 < 结构  < 类

 

 

 

  相关解决方案