测试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();
        }
    }
时间: 2024-10-07 00:21:25

测试List<T> 跟ArrayList性能的例子的相关文章

【转】使用YCSB测试MongoDB的微分片性能

MongoDB的库级锁 MongoDB是目前最流行的NoSQL数据库,以其自然的文档型数据结构,灵活的数据模式以及简单易用的水平扩展能力而获得了很多开发人员的青睐. 但是金无足赤人无完人,MongoDB不是没有它的一些弱点,比如说它的库级锁就是人们经常抱怨的一个性能瓶颈.简单来说MongoDB的库级锁就是针对某一个数据库的所有写操作,必须在获得这个数据库仅有的一个互斥锁情况下才能进行.这个听上去很糟糕,但实际上由于一个写操作只是针对于内存数据更新的那一刹那保留锁,所以每个写锁的占用时间通常是在纳

使用DDMS测试安卓手机APP的性能(android)

安装/配置: 通过另外一个工具也可以测试手机客户端APP的性能,这就是android开发包中的DDMS工具(Dalvik Debug Monitor Service),先来说一下android开发包的安装: 1. 首先安装JDK,1.5以上的版本 2. 在安装完JDK 后,就需要下载及安装Android SDK,即: android-sdk-windows,压缩包大约有551M左右 3. 解压缩android-sdk-windows,放在C盘的根目录下,配置系统变量path 的值为:C: \an

使用YCSB测试mongodb分片集群性能

1. 测试工具 本次测试选取YCSB(Yahoo! Cloud System Benchmark)作为测试客户端工具.YCSB是Yahoo开源的一个nosql测试工具,用来测试比较各种nosql的性能,项目地址:https://github.com/brianfrankcooper/YCSB.项目的mongodb目录下有详细的安装和测试方法. YCSB支持常见的nosql数据库读写,如插入,修改,删除,读取等.它可以使用多线程来提高客户端的性能.可以方便的自定义各种场景,如95%插入5%读,或者

【转】使用YCSB测试mongodb分片集群性能

1. 测试工具 本次测试选取YCSB(Yahoo! Cloud System Benchmark)作为测试客户端工具.YCSB是Yahoo开源的一个nosql测试工具,用来测试比较各种nosql的性能,项目地址:https://github.com/brianfrankcooper/YCSB.项目的mongodb目录下有详细的安装和测试方法. YCSB支持常见的nosql数据库读写,如插入,修改,删除,读取等.它可以使用多线程来提高客户端的性能.可以方便的自定义各种场景,如95%插入5%读,或者

使用YCSB测试MongoDB的微分片性能

MongoDB的库级锁 MongoDB是目前最流行的NoSQL数据库,以其自然的文档型数据结构,灵活的数据模式以及简单易用的水平扩展能力而获得了很多开发人员的青睐. 但是金无足赤人无完人,MongoDB不是没有它的一些弱点,比如说它的库级锁就是人们经常抱怨的一个性能瓶颈.简单来说MongoDB的库级锁就是针对某一个数据库的所有写操作,必须在获得这个数据库仅有的一个互斥锁情况下才能进行.这个听上去很糟糕,但实际上由于一个写操作只是针对于内存数据更新的那一刹那保留锁,所以每个写锁的占用时间通常是在纳

YCSB测试Mysql,MongoDB,TokuMX,Couchbase性能

测试是由同事完成的,这里只做收藏. 测试说明: 1.数据量为3kw记录,每条记录11个字段,一个为主键,主键为字符类型,类似:user****,后续为数值 其他10字段为字符类型,100字符,记录长度大约为1KB 2.使用ycsb进行压力测试.具体各类型参考以前文档 3.三千万数据,对目前数据库都能缓存到DB中(后续测试缓存80%,50%,30%等情况下性能情况) 4.测试项包括:数据装载,就是insert数据 ycsb的标准负载a.负载b.负载c.负载d.负载e.负载f测试 都采用64线程进行

ArrayList 性能为什么差,来看看源码!

都说ArrayList的性能差,这是为什么呢? 我们知道Array是用数组的实现,初始化时要固定数组的大小.List是用链表实现,大小是可变的. 而ArrayList是用数组实现的可变大小. 源码: using System; namespace LinearList { public class ArrayList { // 成员变量 private const int _defaultCapacity = 4; //默认初始容量 private object[] _items; //用于存放

如何进行oracle capability i/o(压力测试数据库服务器i/o性能)

一 .oracle 有关 IO 信息的相关统计函数 Oracle i/o stack包含hbas,存储相关的交换机.存储物理磁盘.那么oracle建议在应用程序部署的时候,建议去验证i/o避免存在问题.但是之前有一个很刺手的问题,那就是如何去验证i/o侧吞吐量,换句话说怎么去验证i/o吞吐量更符合真实的生产环境. In Oracle Database 11g, the Real Application Testing feature (Capture/Replay) was introduced

编写测试类,了解ArrayList的方法

这篇文章主要介绍了C#中动态数组用法,实例分析了C#中ArrayList实现动态数组的技巧,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了C#中动态数组用法.分享给大家供大家参考.具体分析如下: ArrayList是一种动态数组,其容量可随着我们的需要自动进行扩充. ArrayList位于System.Collections命名空间中,所以我们在使用时,需要导入此命名空间. 下面,我们还是在Student类的基础上利用ArrayList操作,从而了解ArrayList的用法 public