0 people like it.
Like the snippet!
Tuple Performance
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
|
#time "on"
module Tupled =
let foo (f : int * int -> int) =
f (1, 2)
let bar (a : int, b : int) =
a + b
let test () =
let mutable x = 0
for i in 1 .. 2000000000 do
x <- x + foo bar
printfn "%A" x
test ()
#time "on"
module Curried =
let foo (f : int -> int -> int) =
f 1 2
let bar (a : int) (b : int) =
a + b
let test () =
let mutable x = 0
for i in 1 .. 2000000000 do
x <- x + foo bar
printfn "%A" x
test ()
#time "on"
// Not the same but notice the amount of gen0 GC's
module TupledReturn =
let foo (f : int -> int -> int * int) =
f 1 2
let bar (a : int) (b : int) =
a, b
let test () =
let mutable x = 1, 2
for i in 1 .. 2000000000 do
x <- foo bar
printfn "%A" x
test ()
|
val foo : f:(int * int -> int) -> int
Full name: Script.Tupled.foo
val f : (int * int -> int)
Multiple items
val int : value:'T -> int (requires member op_Explicit)
Full name: Microsoft.FSharp.Core.Operators.int
--------------------
type int = int32
Full name: Microsoft.FSharp.Core.int
--------------------
type int<'Measure> = int
Full name: Microsoft.FSharp.Core.int<_>
val bar : a:int * b:int -> int
Full name: Script.Tupled.bar
val a : int
val b : int
val test : unit -> unit
Full name: Script.Tupled.test
val mutable x : int
val i : int32
val printfn : format:Printf.TextWriterFormat<'T> -> 'T
Full name: Microsoft.FSharp.Core.ExtraTopLevelOperators.printfn
val foo : f:(int -> int -> int) -> int
Full name: Script.Curried.foo
val f : (int -> int -> int)
val bar : a:int -> b:int -> int
Full name: Script.Curried.bar
val test : unit -> unit
Full name: Script.Curried.test
module TupledReturn
from Script
val foo : f:(int -> int -> int * int) -> int * int
Full name: Script.TupledReturn.foo
val f : (int -> int -> int * int)
val bar : a:int -> b:int -> int * int
Full name: Script.TupledReturn.bar
val test : unit -> unit
Full name: Script.TupledReturn.test
val mutable x : int * int
More information