当前位置: 代码迷 >> 综合 >> C#的泛型结构和非泛型结构谁快谁慢?性能测试告诉你!
  详细解决方案

C#的泛型结构和非泛型结构谁快谁慢?性能测试告诉你!

热度:0   发布时间:2024-02-12 11:18:09.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("非泛型", () =>{MyStruct1 myStruct = default;for (int i = 0; i < 100000000; i++){myStruct.Data1 += 3;myStruct.Data2 -= 7;myStruct.Data3 *= 12;myStruct.Data4 /= 6;myStruct.Data1 /= 2;myStruct.Data2 /= 4;myStruct.Data1 += 3;myStruct.Data2 -= 7;myStruct.Data3 *= 12;myStruct.Data4 /= 6;myStruct.Data1 /= 2;myStruct.Data2 /= 4;myStruct.Data1 += 3;myStruct.Data2 -= 7;myStruct.Data3 *= 12;myStruct.Data4 /= 6;myStruct.Data1 /= 2;myStruct.Data2 /= 4;myStruct.Data1 += 3;myStruct.Data2 -= 7;myStruct.Data3 *= 12;myStruct.Data4 /= 6;myStruct.Data1 /= 2;myStruct.Data2 /= 4;}return myStruct.Data1 + myStruct.Data2 + myStruct.Data3 + myStruct.Data4;});Test("泛型", () =>{MyStruct2<double> myStruct = default;for (int i = 0; i < 100000000; i++){myStruct.Data1 += 3;myStruct.Data2 -= 7;myStruct.Data3 *= 12;myStruct.Data4 /= 6;myStruct.Data1 /= 2;myStruct.Data2 /= 4;myStruct.Data1 += 3;myStruct.Data2 -= 7;myStruct.Data3 *= 12;myStruct.Data4 /= 6;myStruct.Data1 /= 2;myStruct.Data2 /= 4;myStruct.Data1 += 3;myStruct.Data2 -= 7;myStruct.Data3 *= 12;myStruct.Data4 /= 6;myStruct.Data1 /= 2;myStruct.Data2 /= 4;myStruct.Data1 += 3;myStruct.Data2 -= 7;myStruct.Data3 *= 12;myStruct.Data4 /= 6;myStruct.Data1 /= 2;myStruct.Data2 /= 4;}return myStruct.Data1 + myStruct.Data2 + myStruct.Data3 + myStruct.Data4;});
}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 MyStruct1
{public double Data1, Data2, Data3, Data4;
}internal struct MyStruct2<T>
{public T Data1, Data2, Data3, Data4;
}

测试结果

泛型:0.666666666666667 1917ms
非泛型:0.666666666666667 1906ms
泛型:0.666666666666667 1916ms
非泛型:0.666666666666667 1931ms
泛型:0.666666666666667 1950ms
非泛型:0.666666666666667 1944ms
泛型:0.666666666666667 1958ms
非泛型:0.666666666666667 1926ms
泛型:0.666666666666667 1928ms
非泛型:0.666666666666667 1921ms
泛型:0.666666666666667 1932ms
非泛型:0.666666666666667 1931ms

……

结论

泛型结构和非泛型结构的性能没有明显差别

  相关解决方案