zoukankan      html  css  js  c++  java
  • 测试List<T> 跟ArrayList性能的例子

      public class FanXingTest
        {
            public static void TestMain()
            {
                ValueTypePerfTest();
                ReferenceTypePerfTest();
                Console.ReadKey();
            }
    
            private static void ValueTypePerfTest()
            {
                const Int32 count = 1000000;
                using (new OperationTimer("List<Int32>"))
                {
                    List<Int32> l = new List<Int32>(count);
                    for (int i = 0; i <count; i++)
                    {
                        l.Add(i);
                        int x = l[i];
                    }
                    l = null;
                }
    
                using (new OperationTimer("ArrayList of Int32"))
                {
                    ArrayList a = new ArrayList();
                
                    for (int i = 0; i < count; i++)
                    {
                        a.Add(i);
                        Int32 x = (Int32)a[i];
                    }
    
                    a = null;
                }
            }
    
            private static void ReferenceTypePerfTest()
            {
                const Int32 count = 1000000;
                using (new OperationTimer("List<string>"))
                {
                    List<string> l = new List<string>(count);
                    for (int i = 0; i < count; i++)
                    {
                        l.Add("x");
                        string x = l[i];
                    }
                    l = null;
                }
                using (new OperationTimer("ArrayList of string"))
                {
                    ArrayList l = new ArrayList();
                    for (int i = 0; i < count; i++)
                    {
                        l.Add("x");
                        string x =(string) l[i];
                    }
                    l = null;
                }
            }
        }
    
        internal sealed class OperationTimer : IDisposable
        {
            private Int64 m_startTime;
            private string m_text;
            private Int32 m_collectionCount;
    
            public OperationTimer(string text)
            {
                PrepareForOperation();
                m_text = text;
                m_collectionCount = GC.CollectionCount(0);
    
                m_startTime = Stopwatch.GetTimestamp();
            }
            public void Dispose()
            {
                Console.WriteLine("{0} seconds GCs={1}  {2}",(Stopwatch.GetTimestamp()-m_startTime)/(double) Stopwatch.Frequency,GC.CollectionCount(0)-m_collectionCount,m_text );
            }
    
    
            private static void PrepareForOperation()
            {
                GC.Collect();
                GC.WaitForPendingFinalizers();
                GC.Collect();
            }
        }
  • 相关阅读:
    P2149 [SDOI2009]Elaxia的路线
    P1346 电车
    P3174 [HAOI2009]毛毛虫
    P3047 [USACO12FEB]附近的牛Nearby Cows
    P4053 [JSOI2007]建筑抢修
    P2607 [ZJOI2008]骑士
    [HNOI2006]马步距离
    [POI2014]Hotel
    [BZOJ3856]Monster
    [BZOJ2819]Nim
  • 原文地址:https://www.cnblogs.com/xinxinzhihuo/p/6280411.html
Copyright © 2011-2022 走看看