Ускоряет ли F # Async.Parallel вычисления?

Действительно ли конструкция "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);

Я полагаю, некоторые из вас объяснят это теоретически, но я также был бы признателен за некоторые реальные тесты.

8
задан Anton Andreev 31 January 2011 в 14:03
поделиться