我已经使用F#powerpack一段时间了,它有很棒的PSeq模块,而且效果非常好。
然而它闻起来并不正确,因为这是F#库的扩展,而不是标准库。在F#中有更正确的方法来执行一般并行吗?
我知道这是一个非常普遍的问题,但我似乎无法在最近的其他任何地方找到明确的答案(例如2013年)
答案 0 :(得分:1)
正如评论中所提到的,PSeq
模块只是the Parallel LINQ library上的一个薄包装器。主要目的是为您提供一个很好的语法,与流水线和与Seq
和其他标准模块一起使用的样式兼容。
因此,如果在您的情况下并行LINQ是正确的,那么PSeq
模块是从F#使用它的最佳方式。也就是说,如果您的集合具有正确的结构,PLINQ只会提高性能 - 您需要处理相当大的集合,并且您运行的操作非常重要(否则,会产生大量开销)。
此外,使用PSeq
的最简单方法可能只是将PSeq.fs
和PSeq.fsi
复制到您的项目中(它们是F#PowerPack的一部分,但如果您只关心{ {1}},然后复制这两个文件即可。)