Advertisement
jackmott

Untitled

Feb 7th, 2016
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.32 KB | None | 0 0
  1. module fs
  2.  
  3.  
  4. open System
  5. open System.Diagnostics
  6. open System.Numerics
  7.  
  8.  
  9. [<EntryPoint>]
  10.  
  11.  
  12.  
  13. let sumTest(args) =
  14. let COUNT:int = 10000000
  15. let numsList = [0..COUNT]
  16. let numsArray = [|0..COUNT|]
  17. let vecArray =
  18. Array.init (COUNT / 8) (fun i -> Vector<int>(numsArray,i*8))
  19.  
  20.  
  21.  
  22. let stopWatch = new Stopwatch()
  23.  
  24. stopWatch.Start()
  25.  
  26.  
  27.  
  28. let sumsSeqReduce =
  29. Seq.reduce (+) numsList
  30.  
  31.  
  32. Console.WriteLine("reduce sequence of list = {0} - Time = {1}", sumsSeqReduce, stopWatch.ElapsedMilliseconds);
  33. stopWatch.Restart()
  34.  
  35. let inline sum a b =
  36. a+b
  37.  
  38. let sumsArray =
  39. Array.reduce sum numsArray
  40.  
  41.  
  42. Console.WriteLine("reduce array = {0} - Time = {1}", sumsArray, stopWatch.ElapsedMilliseconds);
  43. stopWatch.Restart()
  44.  
  45.  
  46. let sumsSumArray =
  47. Array.sumBy (fun x -> x+x) numsArray
  48.  
  49.  
  50. Console.WriteLine("array.sum array = {0} - Time = {1}", sumsSumArray, stopWatch.ElapsedMilliseconds);
  51. stopWatch.Restart()
  52.  
  53. let sumsLoop =
  54. let mutable total = 0;
  55. for i in 0 .. COUNT - 1 do
  56. total <- total + numsArray.[i]
  57. total
  58.  
  59. Console.WriteLine("for loop array = {0} - Time = {1}", sumsLoop, stopWatch.ElapsedMilliseconds);
  60. stopWatch.Restart()
  61.  
  62. let sumsListReduce =
  63. List.reduce (+) numsList
  64.  
  65.  
  66. Console.WriteLine("reduce list = {0} - Time = {1}", sumsListReduce, stopWatch.ElapsedMilliseconds);
  67. stopWatch.Restart()
  68.  
  69. let sumsArrayFold =
  70. Array.fold sum 0 numsArray
  71.  
  72.  
  73. Console.WriteLine("array fold = {0} - Time = {1}", sumsListReduce, stopWatch.ElapsedMilliseconds);
  74. stopWatch.Restart()
  75.  
  76.  
  77. let sumVectorReduce =
  78. Array.reduce (fun a e -> a + e) vecArray
  79.  
  80. Console.WriteLine("numvec: {0} - Time = {1}", sumVectorReduce, stopWatch.ElapsedMilliseconds)
  81.  
  82.  
  83. let sumVectorLoop =
  84. let mutable total = Vector<int>.Zero
  85. for i in 0 .. COUNT/8-1 do
  86. total <- total + vecArray.[i]
  87. total
  88.  
  89. Console.WriteLine("numvec: {0} - Time = {1}", sumVectorLoop, stopWatch.ElapsedMilliseconds)
  90. Console.WriteLine("is SIMD? {0}", Vector.IsHardwareAccelerated);
  91.  
  92. Console.ReadLine() |> ignore
  93. 1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement