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大家已经很熟悉了,如果有不太熟的,可以参考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!

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/547602.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle应收模块核销点不上,详解EBS接口开发之应收款处理

(一)应收款常用标准表简介1.1常用标准表如下表中列出了与应收款处理相关的表和说明&#xff1a;表名说明其他信息AR_BATCHES_ALLAR收款批表AR_BATCH_SOURCES_ALLAR收款类型表对应视图AR_CASH_RECEIPTS_ALLAR收款表对应视图AR_CASH_RECEIPT_HISTORY_ALLAR收款历史表对应视图AR_M…

防雷避险手册

为什么80%的码农都做不了架构师&#xff1f;>>> 防雷避险手册 防雷避险手册.pdf 转载于:https://my.oschina.net/tadcat/blog/148504

OpenCV调用YOLOv4进行目标检测

目标检测就是对目标进行动态实时跟踪定位&#xff0c;常见的目标检测算法有 R-CNN、Fast R-CNN、Faster R-CNN、SSD、Yolo 等&#xff0c;其中 Yolo 的速度和精确度都比较高&#xff0c;且只需训练一次&#xff0c;使用起来比较方便。 这里我们就使用官方现成的模型来检测图片…

2024年3月电子学会青少年编程等级考试时间安排

1考试方式 1. 在线居家考试&#xff08;全国&#xff09;&#xff1b; 2. 对于符合线下考试要求的考试服务网点&#xff0c;经地方实地调研报学会总部批准后&#xff0c;可组织线下考试。 2报名时间 报名时间&#xff1a;2023年12月21日-2024年3月12日16:00&#xff1b; 考…

Sql Server常用时间段查询汇总

前言 本文对应Sql Server 中常用的时间查询的进行一些汇总&#xff0c;例如查询当天的、本周的、本月的、本季度的&#xff0c;某个时间段内的时间。 实例 实例&#xff08;我的&#xff09;表名&#xff1a;mytable 字段名&#xff1a;mydate &#xff08;一&#xff09;、…

scan-cvs-user.sh

为什么80%的码农都做不了架构师&#xff1f;>>> scan-cvs-user.sh #! /bin/sh export LC_ALLzh_CN.UTF-8 cd /bin2/ sh scan-cvs-user-daily.sh > scan-cvs-user-daily.sh.log 2>&1 /usr/bin/mutt -s "scan-cvs-user-daily" scm-svr-mtrsc…

CV2 puttext不能显示中文问题

CV2 puttext不能显示中文问题&#xff0c;还是这个方法管用&#xff1a; 解决方法&#xff1a;将图片格式转化为PIL库的格式&#xff0c;用PIL的方法写入中文&#xff0c;然后在转化为CV的格式 但是采用如下方案会导致性能降低&#xff0c;毕竟多加了一次转化格式。 from P…

LINQ能不能用系列(二)LINQ to SQL 效率比对

前言 很多人听说过LINQ TO SQL与ADO.NET传统方式用于不同的环境&#xff0c;LINQ TO SQL与ADO.NET传统方式也没有可比性&#xff0c;就像公交车与私家车一样&#xff0c;虽然是车但用途完全不同&#xff0c;但很少有人去探究&#xff0c;究竟为什么他们不同&#xff0c;他们不…

libgdx游戏引擎开发笔记(十三)SuperJumper游戏例子的讲解(篇七)----各个物体的创建及其碰撞检测...

接着上一篇&#xff0c;我们完成后续的扫尾工作&#xff1a;游戏中个物体创建及其碰撞检测,分数保存&#xff0c;音效处理。1.World类&#xff1a;&#xff08;加入所有物体&#xff0c;及其碰撞检测&#xff0c;代码里有详细注解&#xff09;package com.zhf.mylibgdx; import…

oracle交流 提问,Oracle相关提问的智慧技巧

《很久以前的一篇对初学Oracle建议的文章》曾提到了提问的智慧&#xff0c;这个问题确实很值得说&#xff0c;我在学生时期&#xff0c;尤其是在本硕阶段中&#xff0c;作为非科班出身&#xff0c;要接触很多新的计算机技术&#xff0c;日常做的最多的&#xff0c;可能就是问问…

yolov5的flask部署python调用

yolov5 github&#xff1a;https://github.com/ultralytics/yolov5 跟踪&#xff1a;https://github.com/mikel-brostrom/Yolov5_DeepSort_Pytorch TensorRT&#xff1a;https://github.com/TrojanXu/yolov5-tensorrt NCNN&#xff1a;https://github.com/WZTENG/YOLOv5_NCNN …

Sql Server内置函数实现MD5加密

实例 MD5加密“123456”&#xff1a; HashBytes(MD5,123456) 结果&#xff1a;0xE10ADC3949BA59ABBE56E057F20F883E &#xff08;提示&#xff1a;看完最后&#xff0c;结果要进行转换。&#xff09; 函数 函数描述返回值 HashBytes HashBytes (加密方式, 待加密的值)加密方…

(转)关于X64位系统IIS7下支持32位asp.net程序

最近在windows2008 x64位系统下的IIS7下部署asp.net程序。 vs2005或vs2008默认的情况下是Any cpu 的也就是支持x86和x64两种系统的。可我的程序在引用了一个三方dll组件时引起了这样的错误&#xff1a; 错误“/test”应用程序中的服务器错误。 -------------------------------…

Ubuntu16.04 Caffe 编译安装步骤记录

历时一周终于在 ubuntu16.04 系统成功安装 caffe 并编译&#xff0c;网上有很多教程&#xff0c;但是某些步骤并没有讲解详尽&#xff0c;导致配置过程总是出现各种各样匪夷所思的问题&#xff0c;尤其对于新手而言更是欲哭无泪&#xff0c;在我饱受折磨后决定把安装步骤记录下…

oracle11g arm,想知道ARM11架构?这篇介绍告诉你

实际上&#xff0c;处理器采用的架构才是影响处理器性能的关键因素。手机中采用的ARM架构&#xff0c;从最早的ARM9到下一代的Cortex-A15&#xff0c;已经经历了多次的更新换代&#xff0c;每一次的升级都带来了性能的大幅提升&#xff0c;那么它们各自的性能到底怎么样呢?今天…

C# 调用IP库(QQWry.Dat)查询IP位置及自动升级IP库方法(附IP库下载地址及相关dll下载)

前言 C# 用IP地址&#xff08;123.125.114.144&#xff09;查询位置&#xff08;北京市百度公司&#xff09;的东西&#xff0c;非常好用也非常方便&#xff0c;可手动升级刷新IP库&#xff0c;一次编码永久收益&#xff0c;可支持winform、asp.net等程序。 本文使用的IP库为…

WCF简单教程(8) 安全 - Windows认证

第八篇&#xff1a;WCF安全WCF提供了非常丰富的加密机制与审核机制&#xff0c;以保证对外提供的服务安全可靠。本文是简单教程&#xff0c;所以只挑其中的一小部分来聊聊。先来看看最简单的Windows认证。所谓Windows认证&#xff0c;是指客户端访问时&#xff0c;要提供服务端…

常用Sql整理笔记

一、多行结果转换为一行&#xff0c;用逗号隔开。 mssql代码如下&#xff1a; 点击打开 -- 多行select tid from typeinfo where pid4-- 一行select STUFF((Select ,Convert(varchar(50),tid) FROM typeinfo where pid4 FOR XML PATH()),1,1,) as tid sqlite代码如下&#xff…

Ubuntu16.04 Caffe2 编译安装步骤记录

我的本机环境如下&#xff0c;任何的环境上的不一致可能会带来一些安装上的问题&#xff0c;所以这个教程只是一个简单的参考。 环境 操作系统: Ubuntu 16.04GPU型号: Tesla M40 24GBPython: 2.7 路径 /usr/bin/python即全局的python解释器 caffe2必备依赖的安装 sudo apt-g…

oracle中视图窗粉色的,Oracle 11g日常操作与维护手册

# /oracle/crs/bin/srvctl config nodeapps -a -n linux1RAC安装完以后&#xff0c;可以修改两个节点的VIP。前提是修改后的VIP必须没有被其他系统使用掉。正确的修改方法如下&#xff1a;步骤1&#xff1a;使用srvctl修改VIP进入/crs/bin目录下执行如下命令&#xff1a;# ./sr…