La construction "Async.Parallel" permet-elle vraiment d'accélérer les calculs sur un système multi-core ? Les "Tasks" de la TPL .NET sont-ils impliqués d'une manière ou d'une autre ?
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);
Je suppose que certains d'entre vous l'expliqueront de manière théorique, mais j'apprécierais également des tests en situation réelle.