क्या "Async.Parallel" निर्माण वास्तव में बहु-कोर सिस्टम पर गणनाओं को तेजी से बनाने में मदद करता है? क्या .NET TPL "कार्य" किसी भी तरह से शामिल हैं?क्या F # Async.Parallel गति की गणना करता है?
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);
मुझे लगता है कि आप में से कुछ इसे सैद्धांतिक रूप से समझाएंगे, लेकिन मैं कुछ वास्तविक विश्व परीक्षणों की भी सराहना करता हूं।
अनुक्रम 60000000 तक बढ़ाया गया है, यह 40 सेकंड या उसके बाद pmap में आउट-ऑफ-मेमोरी के साथ 10 सेकंड चलाता है। दोनों संस्करण मेरे दो कोरों में से केवल एक का उपयोग करते हैं। अब मुझे यह समझाने के लिए एक एफ # गुरु की आवश्यकता है :-) – TToni