using System.Diagnostics;
public struct TestStruct2
private static TestStruct[] _arrayOfTestStructs = new TestStruct[100];
private static TestStruct2[] _arrayOfTestStruct2 = new TestStruct2[100];
private static TestClass[] _arrayOfTestClass = new TestClass[100];
private static TestClass2[] _arrayOfTestClass2 = new TestClass2[100];
public static void Main()
var sw = new Stopwatch();
Random rand = new Random();
GC.WaitForPendingFinalizers();
Console.WriteLine("struct1");
Console.WriteLine("Start : {0:N0}",GC.GetTotalMemory(false));
for (int i = 0; i < 100000; i++)
_arrayOfTestStructs[rand.Next(100)] = new TestStruct();
Console.WriteLine(sw.ElapsedMilliseconds);
Console.WriteLine("Working : {0:N0}", GC.GetTotalMemory(false));
GC.WaitForPendingFinalizers();
Console.WriteLine("Collect : {0:N0}", GC.GetTotalMemory(false));
Console.WriteLine("Class1");
for (int i = 0; i < 100000; i++)
_arrayOfTestClass[rand.Next(100)] = new TestClass();
Console.WriteLine(sw.ElapsedMilliseconds);
Console.WriteLine("Working : {0:N0}", GC.GetTotalMemory(false));
GC.WaitForPendingFinalizers();
Console.WriteLine("Collect : {0:N0}", GC.GetTotalMemory(false));
Console.WriteLine("struct2");
for (int i = 0; i < 100000; i++)
_arrayOfTestStruct2[rand.Next(100)] = new TestStruct2();
Console.WriteLine(sw.ElapsedMilliseconds);
Console.WriteLine("Working : {0:N0}", GC.GetTotalMemory(false));
GC.WaitForPendingFinalizers();
Console.WriteLine("Collect : {0:N0}", GC.GetTotalMemory(false));
Console.WriteLine("Class2");
for (int i = 0; i < 100000; i++)
_arrayOfTestClass2[rand.Next(100)] = new TestClass2();
Console.WriteLine(sw.ElapsedMilliseconds);
Console.WriteLine("Working : {0:N0}", GC.GetTotalMemory(false));
GC.WaitForPendingFinalizers();
Console.WriteLine("Collect : {0:N0}", GC.GetTotalMemory(false));