F#内部是否默认并行运行代码?

时间:2014-11-07 13:33:47

标签: .net parallel-processing f# task-parallel-library

我对F#中的并行处理有一个简单的问题。 下面是我的代码来计算1 ^ 2 + 2 ^ 2 + ... + 100 ^ 2的总和(这是非常简单的问题,真的)。据我所知,该程序创建了第二个列表(按第一个列表中的每个项目,并将它们放入第二个列表中),然后它获取第二个列表中所有项目的总和。程序内部是否并行处理原始列表中每个项目的平方?或者这个过程只是顺序的?如果是后者,我该如何让代码并行运行?

let mySum = 
[1..100]
|>Seq.map (fun n -> n*n)
|>Seq.sum

1 个答案:

答案 0 :(得分:6)

默认情况下,没有F#不会使代码并行运行。 此外,该列表定义为具有对其成员的顺序访问的数据结构。 您可以使用例如F#Array.Parallel模块并行运行代码:

let myParSum = 
    [|1..1000|]
    |> Array.Parallel.map (fun n -> n * n)
    |> Array.sum

或使用标准.NET Task Parallel Library