0 people like it.
Like the snippet!
Logging speed
Using Type Provider generated functions for type safe logging.
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:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
|
open FSharpx.TimeMeasurement
open TypeSet.Provided
printfn "Single Int:"
compareTwoRuntimes
10
"sprintf"
(fun _ -> for _ in 1..100000 do sprintf "%d" 1024 |> ignore)
"String.Format"
(fun _ -> for _ in 1..100000 do System.String.Format ("{0}", 1024) |> ignore)
compareTwoRuntimes
10
"sprintf"
(fun _ -> for _ in 1..100000 do sprintf "%d" 1024 |> ignore)
"TypeSet"
(fun _ -> for _ in 1..100000 do TPrint<"%d">.show 1024 |> ignore)
compareTwoRuntimes
10
"TypeSet"
(fun _ -> for _ in 1..100000 do TPrint<"%d">.show 1024 |> ignore)
"String.Format"
(fun _ -> for _ in 1..100000 do System.String.Format ("{0}", 1024) |> ignore)
printfn ""
printfn ""
printfn "Int and String"
compareTwoRuntimes
10
"TPrint"
(fun _ ->
for _ in 1..100000 do
TPrint<"%d %s %s">.show 1024 "a string" "Another" |> ignore)
"String.Format"
(fun _ ->
for _ in 1..100000 do
System.String.Format ("{0} {1} {2}", 1024, "a string", "Another") |> ignore)
printfn ""
printfn ""
printfn "A bit longer string"
compareTwoRuntimes
10
"sprintf"
(fun _ ->
for _ in 1..100000 do
TPrint<"%d %s %s %d %s %s">.show 1024 "a string" "#" 1024 "a string" "Some more" |> ignore)
"String.Format"
(fun _ ->
for _ in 1..100000 do
System.String.Format ("{0} {1} {2} {3} {4} {5}", 1024, "a string", "#", 1024, "a string", "Some more") |> ignore)
System.Console.ReadLine()|>ignore
(*
Single Int:
sprintf 54.5ms
String.Format 25.9ms
Ratio: 2.104247104
sprintf 49.4ms
TypeSet 18.5ms
Ratio: 2.67027027
TypeSet 20.4ms
String.Format 25.9ms
Ratio: 0.7876447876
Int and String
TPrint 33.7ms
String.Format 33.8ms
Ratio: 0.9970414201
A bit longer string
sprintf 71.9ms
String.Format 72.0ms
Ratio: 0.9986111111
*)
|
val printfn : format:Printf.TextWriterFormat<'T> -> 'T
Full name: Microsoft.FSharp.Core.ExtraTopLevelOperators.printfn
val sprintf : format:Printf.StringFormat<'T> -> 'T
Full name: Microsoft.FSharp.Core.ExtraTopLevelOperators.sprintf
val ignore : value:'T -> unit
Full name: Microsoft.FSharp.Core.Operators.ignore
namespace System
Multiple items
type String =
new : value:char -> string + 7 overloads
member Chars : int -> char
member Clone : unit -> obj
member CompareTo : value:obj -> int + 1 overload
member Contains : value:string -> bool
member CopyTo : sourceIndex:int * destination:char[] * destinationIndex:int * count:int -> unit
member EndsWith : value:string -> bool + 2 overloads
member Equals : obj:obj -> bool + 2 overloads
member GetEnumerator : unit -> CharEnumerator
member GetHashCode : unit -> int
...
Full name: System.String
--------------------
System.String(value: nativeptr<char>) : unit
System.String(value: nativeptr<sbyte>) : unit
System.String(value: char []) : unit
System.String(c: char, count: int) : unit
System.String(value: nativeptr<char>, startIndex: int, length: int) : unit
System.String(value: nativeptr<sbyte>, startIndex: int, length: int) : unit
System.String(value: char [], startIndex: int, length: int) : unit
System.String(value: nativeptr<sbyte>, startIndex: int, length: int, enc: System.Text.Encoding) : unit
System.String.Format(format: string, [<System.ParamArray>] args: obj []) : string
System.String.Format(format: string, arg0: obj) : string
System.String.Format(provider: System.IFormatProvider, format: string, [<System.ParamArray>] args: obj []) : string
System.String.Format(format: string, arg0: obj, arg1: obj) : string
System.String.Format(format: string, arg0: obj, arg1: obj, arg2: obj) : string
type Console =
static member BackgroundColor : ConsoleColor with get, set
static member Beep : unit -> unit + 1 overload
static member BufferHeight : int with get, set
static member BufferWidth : int with get, set
static member CapsLock : bool
static member Clear : unit -> unit
static member CursorLeft : int with get, set
static member CursorSize : int with get, set
static member CursorTop : int with get, set
static member CursorVisible : bool with get, set
...
Full name: System.Console
System.Console.ReadLine() : string
More information