博客
关于我
LINQ能不能用系列(一)LINQ to Object 效率比对
阅读量:791 次
发布时间:2023-01-31

本文共 1827 字,大约阅读时间需要 6 分钟。

前言

简介:LINQ,语言集成查询(Language INtegrated Query)是一组用于c#和Visual Basic语言的扩展。

分类:LINQ to Object, LINQ to XML, LINQ to SQL, LINQ to DataSet,LINQ to ADO.NET。

相关:相信linq大家已经很熟悉了,如果有不太熟的,可以参考MSDN 地址:

缘由:Linq 到底能不能用?究竟好不好用,很多时候大家还是众说纷纭,有人迷茫,有人观望,有人觉得无所谓,或者还有人说只是语法糖,中看不中用,哪我们这个系列就为大家揭开谜团。首先来看LINQ to Object在数组筛选方面的效率测试吧。

实例分析

测试环境:visual studio 2011 Beta(netframework 4.0+)C# 控制台程序

测试需求:从10000000条数据中查询大于100的数据。

核心代码(LINQ):

var linqList = from num in list1                where num > 100                select num;

完整代码:

/// /// 效率测试/// /// 第几次测试private static void timeTest(int testCount){    const int listCount = 10000000;         // 数组长度    Random random = new Random();           // 数据随机构建值    // 数组构建     List
listData = new List
(); for (int i = 0; i < listCount; i++) { listData.Add(random.Next(10000)); } // LINQ 测试 Stopwatch linq_Stopwatch = new Stopwatch(); linq_Stopwatch.Start(); var linqList = from num in listData where num > 100 select num; var linqCount = linqList.Count(); linq_Stopwatch.Stop(); // 普通方式 测试 Stopwatch before_Stopwatch = new Stopwatch(); before_Stopwatch.Start(); List
beforeList = new List
(listCount); for (int i = 0; i < listData.Count(); i++) { if (listData[i] > 100) beforeList.Add(listData[i]); } var beforeCount = beforeList.Count; before_Stopwatch.Stop(); // 打印结果 Console.WriteLine(String.Format("第{0}次测试,测试:{5}条数据。\n\r \t LINQ用时:{1}毫秒,筛选了{2}条数据。\n\r\t 普通用时:{3}毫秒,筛选了{4}条数据。\r\n", testCount, linq_Stopwatch.ElapsedMilliseconds, linqCount, before_Stopwatch.ElapsedMilliseconds, beforeCount, listCount));}

 

结果

 

结论:此可知LINQ to Object在做数据处理,效率要好于手动判断,当然LINQ伟大应该是她的语法简洁与优雅。在做数据处理时个人推荐使用LINQ to Object!

 

 

转载地址:http://ouwfk.baihongyu.com/

你可能感兴趣的文章
Laravel Passport
查看>>
laravel 之 Eloquent 模型修改器和序列化
查看>>
Laravel 多环境配置
查看>>
Laravel 安装上传代码不完整的解决方法
查看>>
laravel 路由缓存
查看>>
laravel 通过令牌获取用户ID
查看>>
laravel 部署 file_put_contents failed to open stream: No such file or directory
查看>>
Laravel5.5 集成 mPDF
查看>>
laravel5.5中添加对分页样式的修改上一页和下一页
查看>>
Laravel5.5开发规范 [ 个人总结 ]
查看>>
laravel中composer镜像服务的方式
查看>>
Laravel前后台+API路由分离架构(完善)
查看>>
Laravel渴求式加载
查看>>
Laravel项目宝塔部署全攻略:从0到1的实战指南
查看>>
laravl 文件存储云存储
查看>>
LARGE_INTEGER
查看>>
latex不能识别eps图片
查看>>
LaTeX伪代码编辑
查看>>
Latex相关文章
查看>>
Laurent级数与奇点分析
查看>>