问题标签 [plinq]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
300 浏览

c# - PLINQ 与 LINQ:LINQ 但不是 PLINQ 的 OutOfMemoryException

这是一个有趣的。首先是设置:

  • 8GB 内存
  • 视窗 7 专业版 x64
  • VS2010 终极版

我有一个内存密集型算法,它使用 LINQ/PLINQ 处理数据。最初的实现依赖于 PLINQ。单元测试成功。但值得注意的是,在尝试查看我从使用 PLINQ 与 LINQ 获得什么样的性能优势时,当并行性被禁用时,同样的测试会因 OutOfMemoryException 而失败。

有什么合理的解释吗?我可以始终如一地重现这一点。我没有检查,但我可能不是内存不足,而是一些资源根据线程模型分配不同?想法?

0 投票
4 回答
2808 浏览

c# - Parallel Linq - 返回第一个返回的结果

我正在使用 PLINQ 运行一个测试串行端口以确定它们是否是 GPS 设备的函数。

一些串行端口立即被发现是一个有效的 GPS。在这种情况下,我希望第一个完成测试的人是返回的人。我不想等待其余的结果。

我可以使用 PLINQ 执行此操作,还是必须安排一批任务并等待一个任务返回?

0 投票
2 回答
212 浏览

c# - 是否可以使用 PLINQ 写入 XmlWriter?任何其他流/作家?

我在每个阶段都使用 PLINQ,但会生成 XML 输出。我尝试了一些古怪的异常。所以我想知道是否有一个技巧可以让我进行异步输出。

0 投票
3 回答
2852 浏览

c# - 使用 PLINQ 扩展时是否会传输线程标识?

我正在使用 .AsParallel().ForAll() 在 ASP.NET 请求的上下文中并行枚举集合。枚举方法依赖于 System.Threading.Thread.CurrentPrincipal。

我可以依赖用于将其 System.Threading.Thread.CurrentPrincipal 设置为处理 ASP.NET 请求的线程的 HttpContext.Current.User 的各个线程,还是我需要自己管理它?

另一种提问方式是 PLINQ 使用的线程是否继承了调用该操作的线程的标识?

0 投票
2 回答
771 浏览

.net - AsParallel() 和内部缓冲区大小

如何限制 AsParallel() 预先读取并放入其内部缓冲区的项目数量?

这是一个例子:

我消耗 1 项,睡觉,停止枚举。它在我的机器上打印 526400。在我的真实项目中,每个项目分配数千字节。AsParallel() 会预先读取很多项目,这会导致非常糟糕的内存消耗和 CPU 浪费。

放置 WithMergeOptions(ParallelMergeOptions.NotBuffered) 会有所帮助。它打印 4544。但对我来说仍然太多了。

在 Enum() 中等待会冻结主线程中的循环。

0 投票
3 回答
298 浏览

c# - 使用 Plinq 的存储库模式

我对 Plinq 和 Repo 模式相当陌生。我需要您提供一些参考资料和指导方针,以便在 fx 4.0 中使用 dbml、PLinq 实现存储库模式

0 投票
3 回答
373 浏览

c#-4.0 - LINQ 与 PLINQ:开销何时超过收益?

我正在从事的项目基本上是电子商务类型。我们的架构师从客户那里得到了使用 PLINQ 的指示,因为它比 LINQ 更有益,因为它们并行工作并使用处理器的所有内核,从而可以快速响应。如果可能,客户建议是 PLINQ + Repository。

所以我只想知道,在中小型应用程序中,哪一个比较好。使用 Plinq + Repository 是否可行。根据我的发现,如果我们没有正确处理这些东西,我发现 Plinq 的开销比 linq 更多。请帮我。

0 投票
5 回答
10654 浏览

c# - 如何正确并行化严重依赖 I/O 的作业

我正在构建一个必须处理大量数据的控制台应用程序。

基本上,应用程序从数据库中获取引用。对于每个引用,解析文件的内容并进行一些更改。这些文件是 HTML 文件,并且该过程正在使用 RegEx 替换进行繁重的工作(查找引用并将它们转换为链接)。然后将结果存储在文件系统上并发送到外部系统。

如果我以顺序方式恢复该过程:

我的程序运行正常,但速度很慢。这就是为什么我想并行化这个过程。

到目前为止,我做了一个简单的 Parallelization 添加 AsParallel :

这个简单的改变减少了过程的持续时间(减少了 25% 的时间)。但是,我对并行化的理解是,如果对依赖 I/O 的资源进行并行化,不会有太多好处(或更糟糕的是,好处更少),因为 i/o 不会神奇地翻倍。

这就是为什么我认为我应该改变我的方法,而不是并行化整个过程,而是创建依赖的链式队列任务。

IE,我应该创建一个像这样的流程:

队列读取文件。完成后,排队 ParseHtml。完成后,队列既发送到 WS,又在本地写入。完成后,记录结果。

但是,我不知道如何实现这种想法。

我觉得它会以一组消费者/生产者队列结束,但我没有找到正确的样本。

而且,我不确定是否会有好处。

感谢您的建议

[编辑]事实上,我是使用 c# 4.5 的完美人选......如果它是 rtm :)

[编辑 2]让我认为它没有正确并行化的另一件事是,在资源监视器中,我看到 CPU、网络 I/O 和磁盘 I/O 的图表不稳定。当一个高时,其他低到中等

0 投票
5 回答
5797 浏览

linq - linq 和 plinq 的区别

这两者有什么区别?

比较的最佳方法是什么?

plinq 总是更好?

当我们使用 plinq ?

0 投票
1 回答
828 浏览

c# - 并行 Linq 到对象集合

当我尝试使用 Plinq (Parallel linq) 进行对象收集时,我遇到了一个基本问题,我观察到 Plinq 与正常操作在执行时间方面没有太大差异。任何人都可以检查我的代码并告诉我为什么会这样。我已经在 i7 处理器中运行了这段代码。


上面代码的结果是

经过时间:6:411 秒:并行模式下的毫秒数


经过的时间:6:68 秒:正常模式下的毫秒数