首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

PLINQ执行比LINQ更糟糕

PLINQ vs LINQ: 更糟糕的性能

PLINQ (Parallel LINQ) 是 LINQ (Language Integrated Query) 的并行版本,在处理大量数据时,PLINQ 可以有效缩短程序执行时间。然而,在对比 PLINQ 和 LINQ 的性能时,PLINQ 通常表现得不如 LINQ。

原因:

  1. 资源管理:PLINQ 需要更多的资源进行管理。在多线程环境下,资源竞争可能导致性能下降。
  2. 复杂性增加:对于开发者来说,PLINQ 的语法和 LINQ 相比更加复杂,这可能导致学习成本的增加。
  3. 性能瓶颈:在 PLINQ 的实现中,额外的线程和上下文切换可能导致额外的性能开销。

应用场景:

PLINQ 更适用于以下场景:

  • 处理非常大量的数据。
  • 在数据量较大时,对数据进行高效的并行处理。
  • 数据处理涉及到大量的并行任务,需要高度可扩展性。

腾讯云相关产品和链接:

推荐的腾讯云产品:

  • 腾讯云分布式数据库 TDSQL:提供多线程和单线程的简化操作,可支持大规模数据分布式处理。
  • 腾讯云分布式数据库服务 DBS:提供高可用、高扩展性的数据库服务,适用于大规模数据存储和管理。
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

C# 多线程八之并行Linq(ParallelEnumerable)

1、简介 关于并行Linq,Ms官方叫做并行语言集成(PLINQ)查询,其实本质就是Linq的多线程版本,常规的Linq是单线程的,也就是同步的过程处理完所有的查询.如果你的Linq查询足够简单,而且耗时短...PLINQ,什么时候使用Linq?...执行一个复杂的查询,本地的运行速度很快,但是放到服务器上去反而变慢了.所以使用还是需要慎重. 2、代码结构简介 (1)、基本Api介绍 那么如何使用PLINQ呢?...所有的PLINQ的Api都在System.Linq.ParallelEnumerable类下面,Api几乎和Linq一样,因为内容太多,这里就不截图了.MS几乎将常规的LINQ所有的Api都实现了一个并行版本...接受一个最大的可分配线程数参数,一般小于内核数. (4)、构造一个强制以并行方式执行PLINQ查询 因为并不并行,是PLINQ内部机制决定的,所以可能你的查询过于简单,它会以并行的方式处理,所以如果你需要强制它以并行方式执行可以调用

1K20

4.0中的并行计算和多线程详解(一)

这里我们可以看出并行循环在执行效率上的优势了。 结论1:在对一个数组内的每一个项做单独处理时,完全可以选择并行循环的方式来提升执行效率。...; } 执行结果如下: ? 结论2:使用Stop会立即停止循环,使用Break会执行完毕所有符合条件的项。...五、PLinqLinq的并行计算) 上面介绍完了For和ForEach的并行计算盛宴,微软也没忘记在Linq中加入并行计算。下面介绍Linq中的并行计算。...AsSequential() 指定查询的其余部分应像非并行 LINQ 查询一样按顺序运行。...AsUnordered() 指定查询的其余部分的 PLINQ 不需要保留源序列的排序。 WithCancellation() 指定 PLINQ 应定期监视请求取消时提供的取消标记和取消执行的状态。

1.6K41

一、简单使用二、 并行循环的中断和跳出三、并行循环中为数组集合添加项四、返回集合运算结果含有局部变量的并行循环五、PLinqLinq的并行计算)

这里我们可以看出并行循环在执行效率上的优势了。 结论1:在对一个数组内的每一个项做单独处理时,完全可以选择并行循环的方式来提升执行效率。...; } 执行结果如下: ? 结论2:使用Stop会立即停止循环,使用Break会执行完毕所有符合条件的项。...五、PLinqLinq的并行计算) 上面介绍完了For和ForEach的并行计算盛宴,微软也没忘记在Linq中加入并行计算。下面介绍Linq中的并行计算。...AsSequential() 指定查询的其余部分应像非并行 LINQ 查询一样按顺序运行。...AsUnordered() 指定查询的其余部分的 PLINQ 不需要保留源序列的排序。 WithCancellation() 指定 PLINQ 应定期监视请求取消时提供的取消标记和取消执行的状态。

2.5K61

.NET面试题系列 - LINQ:性能

我们必须使用ToList方法强制LINQ提前执行。 避免毫无必要的缓存整个序列 在获得序列最后一个成员时,我们有很多方法: ? 其中前两个方法都不是最好的。...注意当你返回IEnumerable时,你并没有开始遍历这个序列(只有当你强制LINQ执行时,才会执行这个返回IEnumerable的方法)。...LINQ VS PLINQ(重复运行相同的LINQ语句) 显而易见,如果我们重复运行相同的任务,且任务之间又没有什么关系(不需要对结果进行汇总),此时我们可以想到用多线程来解决问题,重复利用系统的资源:...执行后只用了423毫秒。通常来说,执行的结果将等于Foreach的时间,除以系统CPU的核数量。当CPU为双核时,速度大概可以提升一倍。当然,对于单核机器来说,PLINQ是没有意义的。...是否需要重复极其多次运行相同的LINQ语句?考虑使用foreach或者PLINQ来优化性能。 使用LinqOptimizer来优化LINQ语句。

2.5K40

全面迎接.Net3.0时代的到来(WCFWFWPFLINQ)

Q:为何 LINQ 查询语法是以 from 关键字开头的,而不是以 select 关键字开头的?select 开头这种写法跟SQL的写法接近,更易懂呀?...一般来讲,这类查询语句的一个重要特点就是可以并行化执行。虽然有些情况下并行可能会带来一些问题,但这种情况非常少见。这样也就水到渠成地引出了PLINQ这个并行处理的LINQ类库。...PLINQ原名为Parallel LINQ,支持XML和内存中的数据集合。执行于远程服务器上的查询语句(例如LINQ to SQL)显然无法实现这个功能。...将LINQ语句转换为PLINQ语句极为简单——只需要在查询语句中From子句所指定的数据源的最后添加.AsParallel()即可。...随后Where、OrderBy和Select子句将自动改为调用这个并行的LINQ版本。 据MSDN Magazine介绍,PLINQ可以以三种方式执行

1.7K100

.NET并行编程实践(一:.NET并行计算基本介绍、并行循环使用模式)

阅读目录: 1.开篇介绍 2.NET并行计算基本介绍 3.并行循环使用模式 3.1并行For循环 3.2并行ForEach循环 3.3并行LINQPLINQ) 1】开篇介绍 最近这几天在捣鼓并行计算...,后者并行执行; 在循环的内部我加上了一个2000的简单空循环逻辑,为什么要这么做后面会解释介绍(小循环并行模式不会提升性能反而会降低性能);这里是为了让模拟场景真实一点; 我们来看一下测试相关的数据...(PLINQ) 首先PLINQ是只针对Linq to Object的,所以不要误以为它也可以使用于Linq to Provider,当然自己可以适当的封装;现在LINQ的使用率已经很高了,我们在做对象相关的操作时基本上都在使用...LINQ,很方便,特别是Select、Where非常的常用,所以.NET并行循环也在LINQ上进行了一个封装,让我们使用LINQ的时候很简单的使用并行特性; LINQ核心原理的文章:http://www.cnblogs.com.../wangiqngpei557/category/421145.html 根据LINQ的相关原理,知道LINQ是一堆扩展方法的链式调用,PLINQ就是扩展方法的集合,位于System.Linq.ParallelEnumerable

1.7K100

【深入浅出C#】章节 9: C#高级主题:多线程编程和并发处理

八、并行LINQPLINQ) 8.1 利用多核处理器的并行查询 并行LINQPLINQ)是.NET中的一种并行编程模型,它扩展了LINQ(Language Integrated Query)以支持并行处理...你只需将普通的LINQ查询转换为PLINQ查询,而无需手动编写并发逻辑。 数据分区: PLINQ会将输入数据分区成多个块,每个块都会在不同的线程上并行处理。这可以减少数据竞争并提高性能。...使用PLINQ的一个例子: using System; using System.Linq; using System.Threading.Tasks; class Program { static...8.2 使用AsParallel()来开启PLINQ查询 下面是如何使用 AsParallel() 来开启PLINQ查询的示例: using System; using System.Linq; class...以下是使用PLINQ进行并行排序、聚合和筛选操作的示例代码: using System; using System.Linq; class Program { static void Main

1.9K33

.Net多线程编程—Parallel LINQ、线程池

Parallel LINQ 1 System.Linq.ParallelEnumerable 重要方法概览: 1)public static ParallelQuery AsParallel...说明: 1)PLINQ实现了全部的LINQ操作符,并添加了部分并行操作符。 2)不论是并发集合或传统集合都可使用PLINQ。...3)默认情况下,执行PLINQ时,.NET尽量避免高开销并行化算法;若想强制并行执行,可使用ParallelExecutionMode.ForceParallelism。...4)根据可用内核数,PLINQ将接受的数据源分解为多份,然后在不同的内核上处理每一份。且对每一份的执行没有固定顺序。...5)PLINQ查询有延缓执行的效果,因此要捕获查询所产生的结果在被消费者消费时产生的异常。 6)Aggregate的重载方法之一可以将数据源序列分区成几个子序列(分区)。

1K70

NetCore并发编程

---- 2.并行编程(Parallel) 这个其实出来很久了,现在基本上都是用 PLinq比较多点,主要就是: 数据并行:重点在处理数据(eg:聚合) 任务并行:重点在执行任务(每个任务块尽可能独立,...越独立效率越高) 数据并行 以前都是 Parallel.ForEach这么用,现在和Linq结合之后非常方便 .AsParallel()就OK了 说很抽象看个简单案例: static void Main...超时了也就终止了 PLinq这么方便,其实也是有一些小弊端的,比如它会直接最大程度的占用系统资源,可能会影响其他的任务,而传统的Parallel则会动态调整 ---- 任务并行(并行调用) 这个PLinq...任务调度等,这些关键词我提一下,也方便你去搜索自己学习拓展 先到这吧,其他的自己探索一下吧,最后贴一些Nuget库,你可以针对性的使用: 数据流: Microsoft.Tpl.Dataflow 响应编程(Linq...的Rx操作): Rx-Main 不可变类型: Microsoft.Bcl.Immutable 不得不感慨一句,微软妈妈真的花了很多功夫,Net的并发编程Python省心多了(完) https://www.cnblogs.com

2.6K40

Python3 与 C# 并发编程之~ 上篇

await生效(为了向后兼容) 对了,如果返回的是void,你设置成Task就行了,触发是类似于事件之类的方法才使用void,不然没有返回值都是使用Task 项目里经常有这么一个场景:等待一组任务完成后再执行某个操作...---- 2.并行编程(Parallel) 这个其实出来很久了,现在基本上都是用 PLinq比较多点,主要就是: 数据并行:重点在处理数据(eg:聚合) 任务并行:重点在执行任务(每个任务块尽可能独立,...越独立效率越高) 数据并行 以前都是 Parallel.ForEach这么用,现在和Linq结合之后非常方便 .AsParallel()就OK了 说很抽象看个简单案例: static void Main...超时了也就终止了 PLinq这么方便,其实也是有一些小弊端的,比如它会直接最大程度的占用系统资源,可能会影响其他的任务,而传统的Parallel则会动态调整 ---- 任务并行(并行调用) 这个PLinq...任务调度等,这些关键词我提一下,也方便你去搜索自己学习拓展 先到这吧,其他的自己探索一下吧,最后贴一些Nuget库,你可以针对性的使用: 数据流: Microsoft.Tpl.Dataflow响应编程(Linq

59040

.Net异步编程知多少

什么是后台线程 后台线程不会影响应用程序的终结,当所有前台线程执行完毕后,后台线程无论是否执行完毕,都会被终结。...执行发现,【后台线程被调用】将不会显示。因为当所有的前台线程执行完毕后,应用程序就关闭了,不会等待所有的后台线程执行完毕,所以不会显示。 4....PLINQ(并行LINQ查询) 为并行运行而设计的LINQ查询为PLINQ。System.Linq命名空间的ParallelEnumerable中包含了一些扩展方法来支持PINQ查询。...被async标记的方法,方法的执行结果或者任何异常都将直接反映在返回类型中。 不是被async标记的方法,就会被异步执行,刚开始都是同步开始执行。...()执行完毕,当前线程为:3。

81370

【深入浅出C#】章节 9: C#高级主题:LINQ查询和表达式

C#高级主题涉及到复杂、更灵活的编程概念和技术,能够让开发者更好地应对现代软件开发中的挑战。...简洁的语法: LINQ引入了类似SQL的查询语法,使得开发者能够以简洁的方式表达数据查询和操作。这种直观的语法让代码更易于理解和维护。...下面是这两种语法风格的对比: 查询表达式语法: 使用类似于SQL的语法,接近自然语言。 更具可读性,对于初学者来说容易理解。 通常适用于复杂查询,涉及多个条件、排序和分组。...可以在代码中进行细粒度的操作控制,适用于灵活的操作序列。 操作更加灵活,可以根据需求组合不同的方法调用。 支持的操作丰富,因为可以调用LINQ扩展方法。...Parallel LINQ (PLINQ):这是一种支持并行执行LINQ扩展,适用于在多核处理器上执行查询。

94861

《CLR via C#》笔记:第5部分 线程处理(1)

第二十七章 计算限制的异步操作 CLR线程池基础 执行简单的计算限制操作 执行上下文 协作式取消和超时 任务 Parallel的静态For,ForEach和Invoke方法 并行语言集成查询(PLINQ...除此之外,系统变得以往安全,因为应用程序代码无法访问另一个应用程序或者OS自身使用的用户名、密码、信用卡资料或其他敏感信息。...(P631 last2) 并行语言集成查询(PLINQ) Microsoft的语言集成查询(Language Integrated Query,LINQ)功能提供了一个简捷的语法来查询数据集合。...可用LINQ轻松对数据项进行筛选、排序、投射等操作。使用LINQ to Objects时,只有一个线程顺序处理数据集合中的所有项;我们称之为顺序查询(sequential query)。...要提高处理性能,可以使用并行LINQ(Parallel LINQ),它将顺序查询转换成并行查询,在内部使用任务(排队给默认TaskScheduler),将集合中的数据项的处理工作分散到多个CPU上,以便并发处理多个数据项

58310

Excel催化剂开源第14波-VSTO开发之单元格区域转DataTable

在Excel开发过程中,大部分时候是和Range单元格区域打交道,在VBA开发中,大家都知道的一点是,不能动不动就去遍历所有单元格,那性能是非常糟糕的,很多时候,是需要把整个单元格区域装入数组中再作处理的...同时在.Net世界中,有一猛药,谁用谁喜爱的,用LINQ的方法来访问数据,什么排序、筛选、去重,分组等等,会用SQL语句的人,都知道这叫怎样地一个方便。LINQSQL还要好用、易用好几倍。...然后才是真正的VSTO开发,在.Net的世界中,有了Excel的源数据,再经过许多轻松方便的轮子功能,快速地实现数据的转换,在Excel催化剂中大量使用(因笔者是数据库技术的资深玩家,可能较一般专业程序开发者玩得溜在这一块

1.5K20

C#秒杀Java的五个不可替代的特性,完美的编程语言并不存在

我们并不想纠结于某一个语言另一个语言好,我们只想罗列出 C# 开发者能用到而 Java 中没有的那些特性而已。 下面我们开始吧。...要在 LINQ执行查询操作,首先获取数据库,然后创建查询,最后执行查询。在 LINQ to Object 查询中,这可能仅像一样代码一样简单,而不是为每个循环编写嵌套的复杂迭代。...相比于创建类,编写结构体最重要的好处是在构造一个值类型时在构造引用类型时容易确保值语义。...3.Async/Await 在一段代码中调用 async,或者明确地调用方法,这个方法都会在另一个线程上执行,不会阻塞当前线程。...诚然,很多这些存在于 C# 而不存在于Java 中的特性在常规使用中提供了使用 Lambda 简洁的语法。

2.8K100

.NET面试题系列 - .NET框架基础知识(1)

.NET3.5集成了LINQ。另外Entity Framework取代ADO.NET,它对应VS2008。 .NET4.0提出了任务并行库和PLINQ。 ?...Nuget相比add reference,更不容易出错,界面友好,且不会轻易陷入dll陷阱。 经过.NET牌编译器编译之后的程序集有两种形态:类库(.dll)形态和可执行文件(.exe)形态。....System.Xml:XML 解析器 System.Linq,System.Xml.LinqLINQ 的核心类库,System.LinqLINQ to Object,而 System.Xml.Linq...则是 LINQ to XML。...值得一提的是,x86编译器是一个成熟的编译器,执行优化x64更大胆。x64不会执行上面所说的特定的优化。在再次用f6进行编译之后,用ctrl+f5运行程序,程序将会陷入无限循环。 ?

1.6K10

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券