首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PLINQ性能问题

PLINQ性能问题
EN

Stack Overflow用户
提问于 2011-01-29 19:11:08
回答 2查看 471关注 0票数 2

我在超过10000个元素的集合上使用PLINQ ...我没有获得与顺序查询相比的性能。

我的系统配置如下:操作系统-Windows7 32位,处理器-英特尔Core2Duo。

请帮帮我,我没有得到适当的表现。

查询为:

代码语言:javascript
复制
ParallelQuery<int> j = Enumerable.Range(0, 1000000).AsParallel();
var sss =  j.Where(o => o%2 == 0);
EN

回答 2

Stack Overflow用户

发布于 2011-01-29 19:37:11

由于您的任务非常轻量级,线程上下文切换将导致较大的开销。可以通过将轻量级任务分组为涉及更多大量工作的批次来改善情况。这可以使用PLinq中的分区支持来实现。请参考以下问题:

Parallel Operation Batching

通过对任务进行分组,您将更好地利用多线程,因为管理开销变得不那么显着。

在您现有的代码示例中,它类似于用顶针从井中取水,对任务进行分组更像是使用水桶。

票数 4
EN

Stack Overflow用户

发布于 2011-01-29 20:09:10

即使任务在线程之间拆分,调用线程的开销通常也很容易变得比简单地按顺序运行更多。

在本例中,您对它做了一些非常简单的数学运算,因此每个操作都在<10nsec内,并且很好地利用了L1和L2缓存。当你引入线程时,它们的启动成本相对较高,部分原因是它们在等待某件事要做的时候处于休眠状态。

看看Custom Partitioners for PLINQ and TPL吧。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4836540

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档