测试环境
- 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
……
耗时: 变量 < 结构 < 类