внизу на
let chksum, maxFlips =
let numCpu = System.Environment.ProcessorCount
let tasksArr = ConcurrentBag<int>(Array.init numCpu id)
let s = ConcurrentStack()
let taskSize = factn / numCpu
Parallel.ForEach(tasksArr, System.Action<_>(fun i ->
s.Push(run n fact taskSize i)
)) |> ignore
s
|> Seq.reduce (fun (c1,f1) (c2,f2) -> c1+c2,max f1 f2)
string chksum+"\nPfannkuchen("+string n+") = "+string maxFlips
|> stdout.WriteLine
Стало в 30 раз быстрее
Забей, это мертвый проект
учитывая что каждых несколько месяцев появляется ньюфаг и трясет этим сайтом говоря что фшарп медленный, то может стоит попробовать)
А зачем concureentstack?
Обсуждают сегодня