运行结果:
引用类型耗时:205
值类型耗时:152
可见初始化速度值类型是优于引用类型的,也可能是引用类型引发了GC导致。
作为方法参数传递,代码如下:
static void Main(string[] args)
{
Console.WriteLine("test start");
long totalCount = 1000000000;
Stopwatch sw = new Stopwatch();
sw.Start();
TestRef tempRef = new TestRef() { Id = 1, Name = "test" , Name2="r3rewfdsafdsa", Name3="fsrewfdsafdsafdsa", Name4="fdafdasfdsafdsa", Name5="432tretsfds", Name6="fdsafdasfdasfd" };
for (int i = 0; i < totalCount; i++)
{
TestR(tempRef);
}
sw.Stop();
Console.WriteLine($"引用类型耗时:{sw.ElapsedMilliseconds}");
sw.Reset();
sw.Start();
TestVal tempVal = new TestVal() { Id = 1, Name = "test", Name2 = "r3rewfdsafdsa", Name3 = "fsrewfdsafdsafdsa", Name4 = "fdafdasfdsafdsa", Name5 = "432tretsfds", Name6 = "fdsafdasfdasfd" };
for (int i = 0; i < totalCount; i++)
{
TestV(tempVal);
}
sw.Stop();
Console.WriteLine($"值类型耗时:{sw.ElapsedMilliseconds}");
Console.Read();
}
static void TestR(TestRef r)
{
return;
}
static void TestV(TestVal v)
{
return;
}
class TestRef
{
public int Id { get; set; }
public string Name { get; set; }
public string Name2 { get; set; }
public string Name3 { get; set; }
public string Name4 { get; set; }
public string Name5 { get; set; }
public string Name6 { get; set; }
}
struct TestVal
{
public int Id { get; set; }
public string Name { get; set; }
public string Name2 { get; set; }
public string Name3 { get; set; }
public string Name4 { get; set; }
public string Name5 { get; set; }
public string Name6 { get; set; }
}
运行结果:










