Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- module fs
- open System
- open System.Diagnostics
- open System.Numerics
- [<EntryPoint>]
- let sumTest(args) =
- let COUNT:int = 10000000
- let numsList = [0..COUNT]
- let numsArray = [|0..COUNT|]
- let vecArray =
- Array.init (COUNT / 8) (fun i -> Vector<int>(numsArray,i*8))
- let stopWatch = new Stopwatch()
- stopWatch.Start()
- let sumsSeqReduce =
- Seq.reduce (+) numsList
- Console.WriteLine("reduce sequence of list = {0} - Time = {1}", sumsSeqReduce, stopWatch.ElapsedMilliseconds);
- stopWatch.Restart()
- let inline sum a b =
- a+b
- let sumsArray =
- Array.reduce sum numsArray
- Console.WriteLine("reduce array = {0} - Time = {1}", sumsArray, stopWatch.ElapsedMilliseconds);
- stopWatch.Restart()
- let sumsSumArray =
- Array.sumBy (fun x -> x+x) numsArray
- Console.WriteLine("array.sum array = {0} - Time = {1}", sumsSumArray, stopWatch.ElapsedMilliseconds);
- stopWatch.Restart()
- let sumsLoop =
- let mutable total = 0;
- for i in 0 .. COUNT - 1 do
- total <- total + numsArray.[i]
- total
- Console.WriteLine("for loop array = {0} - Time = {1}", sumsLoop, stopWatch.ElapsedMilliseconds);
- stopWatch.Restart()
- let sumsListReduce =
- List.reduce (+) numsList
- Console.WriteLine("reduce list = {0} - Time = {1}", sumsListReduce, stopWatch.ElapsedMilliseconds);
- stopWatch.Restart()
- let sumsArrayFold =
- Array.fold sum 0 numsArray
- Console.WriteLine("array fold = {0} - Time = {1}", sumsListReduce, stopWatch.ElapsedMilliseconds);
- stopWatch.Restart()
- let sumVectorReduce =
- Array.reduce (fun a e -> a + e) vecArray
- Console.WriteLine("numvec: {0} - Time = {1}", sumVectorReduce, stopWatch.ElapsedMilliseconds)
- let sumVectorLoop =
- let mutable total = Vector<int>.Zero
- for i in 0 .. COUNT/8-1 do
- total <- total + vecArray.[i]
- total
- Console.WriteLine("numvec: {0} - Time = {1}", sumVectorLoop, stopWatch.ElapsedMilliseconds)
- Console.WriteLine("is SIMD? {0}", Vector.IsHardwareAccelerated);
- Console.ReadLine() |> ignore
- 1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement