void AddItemsAndTime2() { var array = new FinalizableClass[100000]; for (int x = 0; x < array.Length; x++) array[x] = new FinalizableClass(); m_objects2.Add(array); GC.Collect(); GC.WaitForPendingFinalizers(); GC.Collect(); GC.WaitForPendingFinalizers(); GC.Collect(); GC.WaitForPendingFinalizers(); GC.Collect(); GC.WaitForPendingFinalizers(); Stopwatch sw = new Stopwatch(); var swap = m_objects2[0][0]; m_objects2[0][0] = m_objects2[0][1]; m_objects2[0][1] = swap; m_objects2[0][m_objects2.Count] = null; sw.Start(); GC.Collect(); GC.WaitForPendingFinalizers(); sw.Stop(); long memorySize = Process.GetCurrentProcess().VirtualMemorySize64;//GC.GetTotalMemory(false); //long memorySize = Process.GetCurrentProcess().PrivateMemorySize64;//GC.GetTotalMemory(false); Console.WriteLine("{0}00k items: {1}ms {2}", m_objects2.Count.ToString(), sw.Elapsed.TotalMilliseconds.ToString("0.00"), (memorySize / 1024.0 / 1024.0).ToString("0.0MB")); }
public void ConsumeFinalizableClass() { for (int i = 0; i < N; ++i) { var obj = new FinalizableClass(); obj.Value1 = Data; } }
void AddItemsAndTime2() { var array = new FinalizableClass[100000]; for (int x = 0; x < array.Length; x++) { array[x] = new FinalizableClass(); } m_objects2.Add(array); GC.Collect(); GC.WaitForPendingFinalizers(); GC.Collect(); GC.WaitForPendingFinalizers(); GC.Collect(); GC.WaitForPendingFinalizers(); GC.Collect(); GC.WaitForPendingFinalizers(); Stopwatch sw = new Stopwatch(); var swap = m_objects2[0][0]; m_objects2[0][0] = m_objects2[0][1]; m_objects2[0][1] = swap; m_objects2[0][m_objects2.Count] = null; sw.Start(); GC.Collect(); GC.WaitForPendingFinalizers(); sw.Stop(); long memorySize = Process.GetCurrentProcess().VirtualMemorySize64;//GC.GetTotalMemory(false); //long memorySize = Process.GetCurrentProcess().PrivateMemorySize64;//GC.GetTotalMemory(false); Console.WriteLine("{0}00k items: {1}ms {2}", m_objects2.Count.ToString(), sw.Elapsed.TotalMilliseconds.ToString("0.00"), (memorySize / 1024.0 / 1024.0).ToString("0.0MB")); }