Действительно ли конструкция "Async.Parallel" помогает ускорить вычисления в многоядерной системе? Присутствуют ли здесь как-то «Задачи» .NET TPL?
open System;
let key = Console.ReadKey(true);
let start = System.DateTime.Now
let pmap f l = seq { for a in l do yield async {return f a} } |> Async.Parallel |> Async.RunSynchronously
let map f l = seq {for a in l do yield f a}
let work f l =
match key.KeyChar with
| '1' -> pmap f l
| '2' -> Seq.toArray (map f l)
| _ -> [||]
let result = work (fun x -> (x * x) / 75) (seq { 1 .. 100000*3})
let endtime = DateTime.Now - start
printfn "%A"endtime;
let pause = Console.ReadKey(true);
Я полагаю, некоторые из вас объяснят это теоретически, но я также был бы признателен за некоторые реальные тесты.