LINQ能不能用系列(一)LINQ to Object 效率比对

简介: 前言 简介:LINQ,语言集成查询(Language INtegrated Query)是一组用于c#和Visual Basic语言的扩展。 分类:LINQ to Object, LINQ to XML, LINQ to SQL, LINQ to DataSet,LINQ to ADO.NET。

前言

简介: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 地址:http://msdn.microsoft.com/zh-cn/library/bb397933.aspx
缘由: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;

完整代码:

/// <summary>
/// 效率测试
/// </summary>
/// <param name="testCount">第几次测试</param>
private static void timeTest(int testCount)
{
    const int listCount = 10000000;         // 数组长度
    Random random = new Random();           // 数据随机构建值

    // 数组构建 
    List<int> listData = new List<int>();
    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<int> beforeList = new List<int>(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!

 

 

img_fa0be433d68c8212b2b0b3b1a564ccb1.png
如果本文对你有所帮助,请打赏——1元就足够感动我:)
支付宝打赏 微信打赏
联系邮箱:intdb@qq.com
我的GitHub: https://github.com/vipstone
关注公众号: img_9bde0f31ac4a0eca10b1bd7414b78faf.png


作者: 王磊
出处: http://vipstone.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,请标明出处。

相关文章
|
7月前
|
开发框架 .NET C#
C#学习相关系列之Linq常用方法---排序(一)
C#学习相关系列之Linq常用方法---排序(一)
|
开发框架 .NET 大数据
C#使用linq查询大数据集的方法
这篇文章主要介绍了C#使用linq查询大数据集的方法,涉及C#调用linq进行数据查询的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
2176 0
|
SQL .NET C#
用LINQ在集合中查询特定对象
这里是原文出处: 简单的概括LINQ LINQ是Language-Integrated Query的缩写,是C# 3.0和VB 9.0中新加入的语言特性,可以在编程时使用内置的查询语言进行基于集合的操作。
858 0
|
机器学习/深度学习 .NET
|
.NET 开发框架 存储
|
.NET 开发框架 数据格式
|
.NET 开发框架 数据库
深入调研Linq to Objects Join Linq to Entity
最近工作中遇到数据库组合查询带来的一些问题,因此有必要调研一下Linq to Objects Join Linq to Entity。参考一些网友的代码案例,深入实践了一下使用EntityFramework Code First 下的组合查询。
1255 0