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"));
        }
示例#2
0
 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"));
        }