Skip to content

Instantly share code, notes, and snippets.

@isaacabraham
Created August 7, 2020 17:50
Show Gist options
  • Select an option

  • Save isaacabraham/09244a72ab2def17c9d83ee7a1015599 to your computer and use it in GitHub Desktop.

Select an option

Save isaacabraham/09244a72ab2def17c9d83ee7a1015599 to your computer and use it in GitHub Desktop.
open BenchmarkDotNet
open BenchmarkDotNet.Attributes
open BenchmarkDotNet.Running
let numbers = [ 1 .. 100000 ]
let numbersArray = numbers |> Array.ofList
type Accumulators() =
[<Benchmark>]
member _.ListFold () = List.fold (+) 0 numbers
[<Benchmark>]
member _.SeqFold () = Seq.fold (+) 0 numbers
[<Benchmark>]
member _.ArrayFold () = Array.fold (+) 0 numbersArray
[<Benchmark>]
member _.Recursion () =
let rec doIt acc numbers =
match numbers with
| [] -> acc
| h :: t -> doIt (acc + h) t
doIt 0 numbers
[<Benchmark>]
member _.ForLoop () =
let mutable acc = 0
for n in numbers do
acc <- acc + n
[<EntryPoint>]
let main argv =
let summary = BenchmarkRunner.Run<Accumulators>()
0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment