C# Lambda || Linq 效率问题
255条数据
static void Main()
{
List<IPEndPoint> list = new List<IPEndPoint>();
for (int i =0;i<=255;i++)
{
int j = 34 + i / 255;
string ip = "188.10." + j + "." + i % 255;
int port = 26666;
IPAddress addr = IPAddress.Parse(ip);
IPEndPoint host = new IPEndPoint(addr, port);
list.Add(host);
}
System.Diagnostics.Stopwatch stop = new System.Diagnostics.Stopwatch();
stop.Start();
List<IPAddress> ips = new List<IPAddress>();
foreach (var item in list)
{
if (item.Address.ToString()=="188.10.34.140")
{
ips.Add(item.Address);
}
}
stop.Stop();
double mili = stop.Elapsed.TotalMilliseconds;
Console.WriteLine("loop:\t\t"+mili);
Console.WriteLine("loopCount:\t"+ips.Count);
System.Diagnostics.Stopwatch watch = new System.Diagnostics.Stopwatch();
watch.Start();
List<IPAddress> lists = list.Where(e => e.Address.ToString() == "188.10.34.140").Select(e => e.Address).ToList<IPAddress>();
watch.Stop();
double milis = watch.Elapsed.TotalMilliseconds;
Console.WriteLine("lambda:\t\t"+milis);
Console.WriteLine("lambdaCount:\t"+lists.Count);
}
结果
loop: 0.0951
loopCount: 1
lambda: 0.5711
lambdaCount: 1
2550条
···
static void Main()
{
List list = new List();
for (int i =0;i<=2550;i++)
{
int j = 34 + i / 255;
string ip = "188.10." + j + "." + i % 255;
int port = 26666;
IPAddress addr = IPAddress.Parse(ip);
IPEndPoint host = new IPEndPoint(addr, port);
list.Add(host);
}
System.Diagnostics.Stopwatch stop = new System.Diagnostics.Stopwatch();
stop.Start();
List<IPAddress> ips = new List<IPAddress>();
foreach (var item in list)
{
if (item.Address.ToString()=="188.10.34.140")
{
ips.Add(item.Address);
}
}
stop.Stop();
double mili = stop.Elapsed.TotalMilliseconds;
Console.WriteLine("loop:\t\t"+mili);
Console.WriteLine("loopCount:\t"+ips.Count);
System.Diagnostics.Stopwatch watch = new System.Diagnostics.Stopwatch();
watch.Start();
List<IPAddress> lists = list.Where(e => e.Address.ToString() == "188.10.34.140").Select(e => e.Address).ToList<IPAddress>();
watch.Stop();
double milis = watch.Elapsed.TotalMilliseconds;
Console.WriteLine("lambda:\t\t"+milis);
Console.WriteLine("lambdaCount:\t"+lists.Count);
}
···
结果
loop: 0.4618
loopCount: 1
lambda: 0.6283
lambdaCount: 1
25500条
static void Main()
{
List<IPEndPoint> list = new List<IPEndPoint>();
for (int i =0;i<=25500;i++)
{
int j = 34 + i / 255;
string ip = "188.10." + j + "." + i % 255;
int port = 26666;
IPAddress addr = IPAddress.Parse(ip);
IPEndPoint host = new IPEndPoint(addr, port);
list.Add(host);
}
System.Diagnostics.Stopwatch stop = new System.Diagnostics.Stopwatch();
stop.Start();
List<IPAddress> ips = new List<IPAddress>();
foreach (var item in list)
{
if (item.Address.ToString()=="188.10.34.140")
{
ips.Add(item.Address);
}
}
stop.Stop();
double mili = stop.Elapsed.TotalMilliseconds;
Console.WriteLine("loop:\t\t"+mili);
Console.WriteLine("loopCount:\t"+ips.Count);
System.Diagnostics.Stopwatch watch = new System.Diagnostics.Stopwatch();
watch.Start();
List<IPAddress> lists = list.Where(e => e.Address.ToString() == "188.10.34.140").Select(e => e.Address).ToList<IPAddress>();
watch.Stop();
double milis = watch.Elapsed.TotalMilliseconds;
Console.WriteLine("lambda:\t\t"+milis);
Console.WriteLine("lambdaCount:\t"+lists.Count);
}
结果
loop: 5.0348
loopCount: 1
lambda: 1.5531
lambdaCount: 1
猜想
Linq好像转化为stream再做处理,所以数据量少的时候比较占用时间,但是好省代码量。我也不懂Linq,只会用
C# Lambda || Linq 效率问题的更多相关文章
- 分享一个递归无限级拼接Json的方法---ExtJs的TreePanel和TreeGrid均适用(Ef,Lambda,Linq,IQueryable,List)
话不多说,先上实体类,如果你不是codefirst,就把它当成数据表结构. 下面是底层BaseDal获取数据的方法 (如果你没有Base类,直接写在你的DAL层和BLL层) 下面是BaseServi ...
- [MVC4]ASP.NET MVC4+EF5(Lambda/Linq)读取数据
继续上一节初始ASP.NET MVC4,继续深入学习,感受了一下微软的MVC4+EF5(EntityFramework5)框架的强大,能够高效的开发出网站应用开发系统,下面就看一下如何用MVC4+EF ...
- Lambda表达式效率问题
原文 http://www.importnew.com/17262.html 有许许多多关于 Java 8 中流效率的讨论,但根据 Alex Zhitnitsky 的测试结果显示:坚持使用传统的 Ja ...
- [转][MVC4]ASP.NET MVC4+EF5(Lambda/Linq)读取数据
本文转自:https://blog.csdn.net/dingxiaowei2013/article/details/29405687 继续上一节初始ASP.NET MVC4,继续深入学习,感受了一下 ...
- 几种查询方法(lambda Linq Enumerable静态类方式)
1.需要一个数据源类: using System; using System.Collections.Generic; namespace Linq { public class Student { ...
- C# Lambda && Linq
Lambda表达式在C#3.0加入,它是一个匿名函数,可用于创建委托或者表达式树类型,运算符为=>,读作"goes to",=>左侧是变量,右侧是表达式,变量类型可以自 ...
- 有关 Lambda && linq练习 有待整理
1. 查询Student表中的所有记录的Sname.Ssex和Class列.(select sname,ssex,class from student) Students.Select(s=> ...
- for/foreach/linq效率测试
; Random r = new Random(); List<byte> list = new List<byte>(); Console.WriteLine("开 ...
- ASP.NET MVC4+EF5(Lambda/Linq)读取数据
希望大家记住,这里讲的所有的知识点,不仅仅是了解了就可以了,还要会灵活用,一定要多思考,撑握其中的编程思想. 本文讲的是委托和事件,这两个词可能你早就耳熟能详,但你是否真正撑握了呢? 本系列讲的C#高 ...
- Lambda&Linq
var list = new List<Model> { , UserName = ", Email = "zhang3@yoy.com"}, , UserN ...
随机推荐
- Java并发 —— 线程并发(一)
线程和进程 进程就是一个内存中运行的应用程序 线程是当前进程中的一个执行任务(控制单元),负责当前进程中程序的执行 区别与联系 根本区别:进程是操作系统资源分配的基本单位,线程是处理器任务调度和执行的 ...
- 腾讯云 CHDFS 助力微信秒级异常检测
微信全景监控平台介绍 微信全景监控平台,是微信的多维指标 OLAP 监控以及数据分析平台.支持自定义多维度指标上报,海量数据实时上卷下钻分析,提供了秒级异常检测告警能力. 项目高效支撑了视频号.微信支 ...
- git 基础操作 && 在"develop"分支修改动但不想提交切换到"master"分支(最后)
测试学习准备条件:一个目录,含不含有文件都可以,创建一个test.txt 1. 创建空仓库 git init 2. 修改过后,添加到本地仓库 添加指定的文件,如果一个以上,文件名空格隔开 git ad ...
- Excel VLOOKUP 函数入门教程
一.引言 在日常工作中,Excel 是处理数据的强大工具之一,而 VLOOKUP 函数作为 Excel 中最常用的查找函数之一,能够帮助用户在表格或数值数组中快速定位并返回所需的数据.它的工作原理是在 ...
- 04. PART 2 IdentityServer4 ASP.NET Core Identity .NET Core 3.1
04. PART 2 IdentityServer4 ASP.NET Core Identity .NET Core 3.1 如果您已经来到这里,那么祝贺你的坚持,最难的部分已经完成了.我们仅仅需要的 ...
- Nuget Reference 丢失问题
现象 在 Visual Studio 2017 中创建一个控制台项目.创建出来的项目如下所示. 通过 NuGet 管理器,添加 Newtonsoft.Json 的 NuGet 包,安装之后,项目中添加 ...
- Windows 11 下 Virtualbox 6.1.34 出现 End kernel panic - not syncing: attempted to kill the idle task
前言小半年没用 Virtualbox 了,切换到了 VMware,今天又切换回去(无聊),但是安装虚拟机出现这个错误. 解决方法根据 Virtualbox 论坛的讨论[1]和[2],首先明确 系统必须 ...
- Qt编写音频播放示例(带音频曲线/振幅/传输/录制等)
一.功能特点 自动计算音频振幅,绘制音频振幅曲线和音频数据曲线. 支持音频录制,可选音频输入设备.采样频率.通道等参数,Qt5默认保存wav格式,Qt6默认保存mp3格式,Qt6可选wma.aac等格 ...
- Qt编写项目作品26-一维码二维码解析及生成
一.功能特点 支持本地USB摄像头实时解析. 支持网络视频流实时解析. 解码格式支持一维码二维码等各种编码. 可生成一维码二维码,一维码支持EAN_13格式,其他格式可定制. 条形码参数支持宽度.高度 ...
- Intellij IDEA IDE中采用Maven集成SSM框架时配置文件的功能和关系说明
Intellij IDEA IDE中采用Maven集成SSM框架时设计的配置文件主要有:pom.xml.web.xml.applicationContext.xml.springmvc-config. ...