試しに、1000000回で実行時間を比べたら、ノンパラレルでないほうが速かったようなので
10000000回に一桁回数を増やしたところ、パラレルのほうが速くなりました。
シミュレーションの計算などで活用すると便利なようです。
let Runif seed n =
let r = new System.Random(seed)
let ans:float[] = Array.zeroCreate n
for i in 0..(n-1) do
ans.[i] <- r.NextDouble()
ans
let Parallel' n =
let r = new System.Random()
[for x in 1..2 -> async { return Runif (r.Next ()) n }]
|> Async.Parallel
|> Async.RunSynchronously
let nonParallel' n =
let r = new System.Random()
[for x in 1..2 -> Runif (r.Next ()) n ]
[<EntryPoint>]
let main argv =
let sw = System.Diagnostics.Stopwatch()
sw.Start()
let rs=[nonParallel' 10000000]
sw.Stop()
System.Console.WriteLine("nonParrallel Time elapsed: {0}", sw.Elapsed)
sw.Reset()
sw.Start()
let rs=[Parallel' 10000000]
sw.Stop()
System.Console.WriteLine("Parrallel Time elapsed: {0}", sw.Elapsed)
sw.Reset()
System.Console.ReadKey() |> ignore
0 // 整数の終了コードを返します