c# – 为什么一个简单的List似乎比ArrayList慢?
发布时间:2020-12-15 07:59:32 所属栏目:百科 来源:网络整理
导读:出于好奇,我想测试将GenericList与ArrayList进行比较的刻度数. 对于下面的代码,当我检查秒表时,ArrayList似乎更快. 我做错了还是有解释? (我相信List会更快) 测试代码和输出如下: private static void ArrayListVsGenericList(){ // Measure for ArrayList
出于好奇,我想测试将GenericList与ArrayList进行比较的刻度数.
对于下面的代码,当我检查秒表时,ArrayList似乎更快. 我做错了还是有解释? (我相信List会更快) 测试代码和输出如下: private static void ArrayListVsGenericList() { // Measure for ArrayList Stopwatch w0 = new Stopwatch(); w0.Start(); ArrayList aList = new ArrayList(); for (int i = 0; i < 1001; i++) { Point p = new Point(); p.X = p.Y = i; aList.Add(p); } foreach (Point point in aList) { int v0 = ((Point) aList[8]).X; //unboxing } w0.Stop(); // Measure for Generic List<Point> Stopwatch w1 = new Stopwatch(); w1.Start(); List<Point> list = new List<Point>(); for (int i = 0; i < 1001; i++) { Point p = new Point(); p.X = p.Y = i; list.Add(p); } foreach (var point in list) { int v1 = list[8].X; } w1.Stop(); Console.WriteLine("Watch 0 : " + w0.ElapsedTicks); Console.WriteLine("Watch 1 : " + w1.ElapsedTicks); Console.WriteLine("Watch 0 > Watch 1 : " + (w0.ElapsedTicks > w1.ElapsedTicks)); } 解决方法
更改测试程序以至少运行两次方法并忽略第一次运行.结果是由具体类型List< Point>的代码生成和jitting引起的.
在我的机器上,这导致以下输出: Watch 0 : 154 Watch 1 : 74 Watch 0 > Watch 1 : True 这几乎是人们所期望的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- swift3 – Xcode 8 Beta 4 Swift 3 – “圆”行为发生变化
- React Native开发环境配置(MAC + iOS)官方文档翻译总结
- Swift 2.x Plus -- Guard
- iphone – 登录facebook登录应用程序
- 【嵌入式】——SQLite-2.8.17在FL2440上的移植(redhat9.0 l
- linix服务器 安装oracle12c
- swift 实例演示 Operation 的用法
- Ruby可选参数和多个参数
- Metasploit Framework 安装失败pgsql could not connect 73
- c# – Unity ICallHandler与IInterceptionBehavior