Created
September 28, 2022 05:06
-
-
Save GnicoJP/a53479b7dbadf739b8ef98df6bfb6371 to your computer and use it in GitHub Desktop.
Benchmark of F#'s computation expression using InlineIfLambda
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// For more information see https://aka.ms/fsharp-console-apps | |
open BenchmarkDotNet.Attributes | |
type OptionCode<'T> = unit -> 'T voption | |
type NewOptionBuilder () = | |
member inline __.Run<'T>([<InlineIfLambda>]code : 'T OptionCode) : 'T voption = code () | |
member inline __.Bind<'T, 'T2>(x : 'T voption, [<InlineIfLambda>] code : 'T -> 'T2 OptionCode) : 'T2 OptionCode = | |
(fun () -> match x with | |
| ValueNone -> ValueNone | |
| ValueSome v -> (code v) ()) // let! | |
member inline __.BindReturn<'T, 'T2>(x : 'T voption, [<InlineIfLambda>] f : 'T -> 'T2) : 'T2 OptionCode = | |
(fun () -> match x with | |
| ValueNone -> ValueNone | |
| ValueSome v -> ValueSome (f v)) // let! .. return | |
member inline __.Return<'T>(x : 'T) : 'T OptionCode = | |
(fun () -> ValueSome x) // return | |
member inline __.MergeSources<'T, 'T2>(x1 : 'T voption, x2 : 'T2 voption) : struct('T * 'T2) voption = | |
if x1.IsSome && x2.IsSome then ValueSome struct(x1.Value, x2.Value) else ValueNone // and! | |
let newOption = NewOptionBuilder() | |
type NewOptionBuilder2 () = | |
member inline __.Bind<'T, 'T2>(x : 'T voption, [<InlineIfLambda>] code : 'T -> 'T2 voption) : 'T2 voption = | |
match x with | |
| ValueNone -> ValueNone | |
| ValueSome v -> code v // let! | |
member inline __.BindReturn<'T, 'T2>(x : 'T voption, [<InlineIfLambda>] f : 'T -> 'T2) : 'T2 voption = | |
match x with | |
| ValueNone -> ValueNone | |
| ValueSome v -> ValueSome (f v) // let! .. return | |
member inline __.Return<'T>(x : 'T) : 'T voption = ValueSome x // return | |
member inline __.MergeSources<'T, 'T2>(x1 : 'T voption, x2 : 'T2 voption) : struct('T * 'T2) voption = | |
if x1.IsSome && x2.IsSome then ValueSome struct(x1.Value, x2.Value) else ValueNone // and! | |
let newOption2 = NewOptionBuilder2() | |
type NewOptionBuilder5 () = | |
member inline __.Run<'T>([<InlineIfLambda>]code : 'T OptionCode) : 'T voption = code () | |
member inline __.Bind<'T, 'T2>(x : 'T voption, [<InlineIfLambda>] code : 'T -> 'T2 OptionCode) : 'T2 OptionCode = | |
(fun () -> match x with | |
| ValueNone -> ValueNone | |
| ValueSome v -> (code v) ()) // let! | |
member inline __.BindReturn<'T, 'T2>(x : 'T voption, [<InlineIfLambda>] f : 'T -> 'T2) : 'T2 OptionCode = | |
(fun () -> match x with | |
| ValueNone -> ValueNone | |
| ValueSome v -> ValueSome (f v)) // let! .. return | |
member inline __.Bind2Return<'T1, 'T2, 'T3>(x1 : 'T1 voption, x2 : 'T2 voption, [<InlineIfLambda>] f : struct('T1 * 'T2) -> 'T3) : 'T3 OptionCode = | |
(fun () -> if x1.IsSome && x2.IsSome then ValueSome (f struct(x1.Value,x2.Value)) else ValueNone) // let! .. return | |
member inline __.Bind3Return<'T1, 'T2, 'T3, 'T4>(x1 : 'T1 voption, x2 : 'T2 voption, x3 : 'T3 voption, [<InlineIfLambda>] f : struct('T1 * 'T2 * 'T3) -> 'T4) : 'T4 OptionCode = | |
(fun () -> if x1.IsSome && x2.IsSome && x3.IsSome then ValueSome (f struct(x1.Value,x2.Value,x3.Value)) else ValueNone) // let! .. return | |
member inline __.Bind4Return<'T1, 'T2, 'T3, 'T4, 'T5>(x1 : 'T1 voption, x2 : 'T2 voption, x3 : 'T3 voption, x4 : 'T4 voption, [<InlineIfLambda>] f : struct('T1 * 'T2 * 'T3 * 'T4) -> 'T5) : 'T5 OptionCode = | |
(fun () -> if x1.IsSome && x2.IsSome && x3.IsSome && x4.IsSome then ValueSome (f struct(x1.Value,x2.Value,x3.Value,x4.Value)) else ValueNone) // let! .. return | |
member inline __.Bind5Return<'T1, 'T2, 'T3, 'T4, 'T5, 'T6>(x1 : 'T1 voption, x2 : 'T2 voption, x3 : 'T3 voption, x4 : 'T4 voption, x5 : 'T5 voption, [<InlineIfLambda>] f : struct('T1 * 'T2 * 'T3 * 'T4 * 'T5) -> 'T6) : 'T6 OptionCode = | |
(fun () -> if x1.IsSome && x2.IsSome && x3.IsSome && x4.IsSome && x5.IsSome then ValueSome (f struct(x1.Value,x2.Value,x3.Value,x4.Value,x5.Value)) else ValueNone) // let! .. return | |
member inline __.Return<'T>(x : 'T) : 'T OptionCode = | |
(fun () -> ValueSome x) // return | |
member inline __.MergeSources<'T, 'T2>(x1 : 'T voption, x2 : 'T2 voption) : struct('T * 'T2) voption = | |
if x1.IsSome && x2.IsSome then ValueSome struct(x1.Value, x2.Value) else ValueNone // and! | |
member inline __.MergeSources3<'T, 'T2, 'T3>(x1 : 'T voption, x2 : 'T2 voption, x3 : 'T3 voption) : struct('T * 'T2 * 'T3) voption = | |
if x1.IsSome && x2.IsSome && x3.IsSome then ValueSome struct(x1.Value, x2.Value, x3.Value) else ValueNone // and! | |
member inline __.MergeSources4<'T, 'T2, 'T3, 'T4>(x1 : 'T voption, x2 : 'T2 voption, x3 : 'T3 voption, x4 : 'T4 voption) : struct('T * 'T2 * 'T3 * 'T4) voption = | |
if x1.IsSome && x2.IsSome && x3.IsSome && x4.IsSome then ValueSome struct(x1.Value, x2.Value, x3.Value, x4.Value) else ValueNone // and! | |
member inline __.MergeSources5<'T, 'T2, 'T3, 'T4, 'T5>(x1 : 'T voption, x2 : 'T2 voption, x3 : 'T3 voption, x4 : 'T4 voption, x5 : 'T5 voption) : struct('T * 'T2 * 'T3 * 'T4 * 'T5) voption = | |
if x1.IsSome && x2.IsSome && x3.IsSome && x4.IsSome && x5.IsSome then ValueSome struct(x1.Value, x2.Value, x3.Value, x4.Value, x5.Value) else ValueNone // and! | |
let newOption5 = NewOptionBuilder5() | |
type OldOptionBuilder () = | |
member inline __.Bind<'T, 'T2>(x : 'T voption, f : 'T -> 'T2 voption) : 'T2 voption = | |
ValueOption.bind f x // let! | |
member inline __.BindReturn<'T, 'T2>(x : 'T voption, f : 'T -> 'T2) : 'T2 voption = | |
ValueOption.map f x // let! .. return | |
member inline __.Return<'T>(x : 'T) : 'T voption = | |
ValueSome x // return | |
member inline __.MergeSources<'T, 'T2>(x1 : 'T voption, x2 : 'T2 voption) : struct('T * 'T2) voption = | |
ValueOption.map2 (fun x y -> struct(x, y)) x1 x2 // and! | |
let oldOption = OldOptionBuilder() | |
type OldOptionBuilder5 () = | |
member inline __.Bind<'T, 'T2>(x : 'T voption, [<InlineIfLambda>] f : 'T -> 'T2 voption) : 'T2 voption = | |
ValueOption.bind f x // let! | |
member inline __.BindReturn<'T, 'T2>(x : 'T voption, f : 'T -> 'T2) : 'T2 voption = | |
ValueOption.map f x // let! .. return | |
member inline __.Bind2Return<'T1, 'T2, 'T3>(x1 : 'T1 voption, x2 : 'T2 voption, f : struct('T1 * 'T2) -> 'T3) : 'T3 voption = | |
ValueOption.map2 (fun v1 v2 -> f struct(v1, v2)) x1 x2 // let! .. return | |
member inline __.Bind3Return<'T1, 'T2, 'T3, 'T4>(x1 : 'T1 voption, x2 : 'T2 voption, x3 : 'T3 voption, [<InlineIfLambda>] f : struct('T1 * 'T2 * 'T3) -> 'T4) : 'T4 voption = | |
ValueOption.map3 (fun x y z -> f struct(x, y, z)) x1 x2 x3 // let! .. return | |
member inline __.Bind4Return<'T1, 'T2, 'T3, 'T4, 'T5>(x1 : 'T1 voption, x2 : 'T2 voption, x3 : 'T3 voption, x4 : 'T4 voption, [<InlineIfLambda>] f : struct('T1 * 'T2 * 'T3 * 'T4) -> 'T5) : 'T5 voption = | |
let map4 f x1 x2 x3 x4 = | |
match struct(x1, x2, x3, x4) with | |
| struct(ValueSome v1, ValueSome v2, ValueSome v3, ValueSome v4) -> ValueSome (f v1 v2 v3 v4) | |
| _ -> ValueNone | |
map4 (fun x y z w -> f struct(x, y, z, w)) x1 x2 x3 x4 // and! | |
member inline __.Bind5Return<'T1, 'T2, 'T3, 'T4, 'T5, 'T6>(x1 : 'T1 voption, x2 : 'T2 voption, x3 : 'T3 voption, x4 : 'T4 voption, x5 : 'T5 voption, [<InlineIfLambda>] f : struct('T1 * 'T2 * 'T3 * 'T4 * 'T5) -> 'T6) : 'T6 voption = | |
let map5 f x1 x2 x3 x4 x5 = | |
match struct(x1, x2, x3, x4, x5) with | |
| struct(ValueSome v1, ValueSome v2, ValueSome v3, ValueSome v4, ValueSome v5) -> ValueSome (f v1 v2 v3 v4 v5) | |
| _ -> ValueNone | |
map5 (fun x y z w v -> f struct(x, y, z, w, v)) x1 x2 x3 x4 x5 // and! | |
member inline __.Return<'T>(x : 'T) : 'T voption = | |
ValueSome x // return | |
member inline __.MergeSources<'T, 'T2>(x1 : 'T voption, x2 : 'T2 voption) : struct('T * 'T2) voption = | |
ValueOption.map2 (fun x y -> struct(x, y)) x1 x2 // and! | |
member inline __.MergeSources3<'T, 'T2, 'T3>(x1 : 'T voption, x2 : 'T2 voption, x3 : 'T3 voption) : struct('T * 'T2 * 'T3) voption = | |
ValueOption.map3 (fun x y z -> struct(x, y, z)) x1 x2 x3 // and! | |
member inline __.MergeSources4<'T, 'T2, 'T3, 'T4>(x1 : 'T voption, x2 : 'T2 voption, x3 : 'T3 voption, x4 : 'T4 voption) : struct('T * 'T2 * 'T3 * 'T4) voption = | |
let map4 f x1 x2 x3 x4 = | |
match struct(x1, x2, x3, x4) with | |
| struct(ValueSome v1, ValueSome v2, ValueSome v3, ValueSome v4) -> ValueSome (f v1 v2 v3 v4) | |
| _ -> ValueNone | |
map4 (fun x y z w -> struct(x, y, z, w)) x1 x2 x3 x4 // and! | |
member inline __.MergeSources5<'T, 'T2, 'T3, 'T4, 'T5>(x1 : 'T voption, x2 : 'T2 voption, x3 : 'T3 voption, x4 : 'T4 voption, x5 : 'T5 voption) : struct('T * 'T2 * 'T3 * 'T4 * 'T5) voption = | |
let map5 f x1 x2 x3 x4 x5 = | |
match struct(x1, x2, x3, x4, x5) with | |
| struct(ValueSome v1, ValueSome v2, ValueSome v3, ValueSome v4, ValueSome v5) -> ValueSome (f v1 v2 v3 v4 v5) | |
| _ -> ValueNone | |
map5 (fun x y z w v -> struct(x, y, z, w, v)) x1 x2 x3 x4 x5 // and! | |
let oldOption5 = OldOptionBuilder5() | |
[<MemoryDiagnoser>] | |
type public benchmarker() = | |
[<Benchmark>] | |
member public __.old() = | |
let mutable res = 0 | |
for i in 1..10000000 do | |
let a = oldOption { | |
let! a = if i % 1 = 0 then ValueSome 1 else ValueNone | |
let! b = if i % 2 = 0 then ValueSome 2 else ValueNone | |
let! c = if i % 3 = 0 then ValueSome 3 else ValueNone | |
let! d = if i % 4 = 0 then ValueSome 4 else ValueNone | |
let! e = if i % 5 = 0 then ValueSome 5 else ValueNone | |
res <- a + b + c + d + e + res | |
return a + b + c + d + e | |
} | |
a |> ignore | |
res | |
[<Benchmark>] | |
member public __.oldAnd() = | |
let mutable res = 0 | |
for i in 1..10000000 do | |
let a = oldOption { | |
let! a = if i % 1 = 0 then ValueSome 1 else ValueNone | |
and! b = if i % 2 = 0 then ValueSome 2 else ValueNone | |
and! c = if i % 3 = 0 then ValueSome 3 else ValueNone | |
and! d = if i % 4 = 0 then ValueSome 4 else ValueNone | |
and! e = if i % 5 = 0 then ValueSome 5 else ValueNone | |
res <- a + b + c + d + e + res | |
return a + b + c + d + e | |
} | |
a |> ignore | |
res | |
[<Benchmark>] | |
member public __.oldAnd5() = | |
let mutable res = 0 | |
for i in 1..10000000 do | |
let a = oldOption5 { | |
let! a = if i % 1 = 0 then ValueSome 1 else ValueNone | |
and! b = if i % 2 = 0 then ValueSome 2 else ValueNone | |
and! c = if i % 3 = 0 then ValueSome 3 else ValueNone | |
and! d = if i % 4 = 0 then ValueSome 4 else ValueNone | |
and! e = if i % 5 = 0 then ValueSome 5 else ValueNone | |
res <- a + b + c + d + e + res | |
return a + b + c + d + e | |
} | |
a |> ignore | |
res | |
[<Benchmark>] | |
member public __.efficient() = | |
let mutable res = 0 | |
for i in 1..10000000 do | |
let a = newOption { | |
let! a = if i % 1 = 0 then ValueSome 1 else ValueNone | |
let! b = if i % 2 = 0 then ValueSome 2 else ValueNone | |
let! c = if i % 3 = 0 then ValueSome 3 else ValueNone | |
let! d = if i % 4 = 0 then ValueSome 4 else ValueNone | |
let! e = if i % 5 = 0 then ValueSome 5 else ValueNone | |
res <- a + b + c + d + e + res | |
return a + b + c + d + e | |
} | |
a |> ignore | |
res | |
[<Benchmark>] | |
member public __.efficient2() = | |
let mutable res = 0 | |
for i in 1..10000000 do | |
let a = newOption2 { | |
let! a = if i % 1 = 0 then ValueSome 1 else ValueNone | |
let! b = if i % 2 = 0 then ValueSome 2 else ValueNone | |
let! c = if i % 3 = 0 then ValueSome 3 else ValueNone | |
let! d = if i % 4 = 0 then ValueSome 4 else ValueNone | |
let! e = if i % 5 = 0 then ValueSome 5 else ValueNone | |
res <- a + b + c + d + e + res | |
return a + b + c + d + e | |
} | |
a |> ignore | |
res | |
[<Benchmark>] | |
member public __.efficientAnd() = | |
let mutable res = 0 | |
for i in 1..10000000 do | |
let a = newOption { | |
let! a = if i % 1 = 0 then ValueSome 1 else ValueNone | |
and! b = if i % 2 = 0 then ValueSome 2 else ValueNone | |
and! c = if i % 3 = 0 then ValueSome 3 else ValueNone | |
and! d = if i % 4 = 0 then ValueSome 4 else ValueNone | |
and! e = if i % 5 = 0 then ValueSome 5 else ValueNone | |
res <- a + b + c + d + e + res | |
return a + b + c + d + e | |
} | |
a |> ignore | |
res | |
[<Benchmark>] | |
member public __.efficientAnd5() = | |
let mutable res = 0 | |
for i in 1..10000000 do | |
let a = newOption5 { | |
let! a = if i % 1 = 0 then ValueSome 1 else ValueNone | |
and! b = if i % 2 = 0 then ValueSome 2 else ValueNone | |
and! c = if i % 3 = 0 then ValueSome 3 else ValueNone | |
and! d = if i % 4 = 0 then ValueSome 4 else ValueNone | |
and! e = if i % 5 = 0 then ValueSome 5 else ValueNone | |
res <- a + b + c + d + e + res | |
return a + b + c + d + e | |
} | |
a |> ignore | |
res | |
let fuga () = | |
newOption{ | |
let! v1 = ValueSome 8 | |
let! v2 = ValueSome 4 | |
and! v3 = ValueSome 2 | |
return v1 + v2 + v3 | |
} | |
let fuga2 () = | |
oldOption{ | |
let! v1 = ValueSome 8 | |
let! v2 = ValueSome 4 | |
and! v3 = ValueSome 2 | |
return v1 + v2 + v3 | |
} | |
let fuga3 () = | |
newOption2{ | |
let! v1 = ValueSome 8 | |
let! v2 = ValueSome 4 | |
and! v3 = ValueSome 2 | |
return v1 + v2 + v3 | |
} | |
[<EntryPoint>] | |
let main args = | |
let test = benchmarker() | |
printfn "%d %d %d %d %d %d %d" (test.old()) (test.oldAnd()) (test.oldAnd5()) (test.efficient()) (test.efficient2()) (test.efficientAnd()) (test.efficientAnd5()) | |
//BenchmarkDotNet.Running.BenchmarkRunner.Run(typeof<benchmarker>.Assembly) |> ignore | |
let summary = BenchmarkDotNet.Running.BenchmarkRunner.Run<benchmarker>() | |
0 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
2499990 2499990 2499990 2499990 2499990 2499990 2499990 | |
// Validating benchmarks: | |
// ***** BenchmarkRunner: Start ***** | |
// ***** Found 7 benchmark(s) in total ***** | |
// ***** Building 1 exe(s) in Parallel: Start ***** | |
// start dotnet restore /p:UseSharedCompilation=false /p:BuildInParallel=false /m:1 /p:Deterministic=true /p:Optimize=true in C:\Workspace\Projects\DotnetTest\FsTest\bin\Release\net6.0\e40dbc85-4fa0-48f1-b4dc-15032659eca7 | |
// command took 1.44s and exited with 0 | |
// start dotnet build -c Release --no-restore /p:UseSharedCompilation=false /p:BuildInParallel=false /m:1 /p:Deterministic=true /p:Optimize=true in C:\Workspace\Projects\DotnetTest\FsTest\bin\Release\net6.0\e40dbc85-4fa0-48f1-b4dc-15032659eca7 | |
// command took 2.95s and exited with 0 | |
// ***** Done, took 00:00:04 (4.47 sec) ***** | |
// Found 7 benchmarks: | |
// benchmarker.old: DefaultJob | |
// benchmarker.oldAnd: DefaultJob | |
// benchmarker.oldAnd5: DefaultJob | |
// benchmarker.efficient: DefaultJob | |
// benchmarker.efficient2: DefaultJob | |
// benchmarker.efficientAnd: DefaultJob | |
// benchmarker.efficientAnd5: DefaultJob | |
// ************************** | |
// Benchmark: benchmarker.old: DefaultJob | |
// *** Execute *** | |
// Launch: 1 / 1 | |
// Execute: dotnet "e40dbc85-4fa0-48f1-b4dc-15032659eca7.dll" --benchmarkName "Program+benchmarker.old" --job "Default" --benchmarkId 0 in C:\Workspace\Projects\DotnetTest\FsTest\bin\Release\net6.0\e40dbc85-4fa0-48f1-b4dc-15032659eca7\bin\Release\net6.0 | |
// BeforeAnythingElse | |
// Benchmark Process Environment Information: | |
// Runtime=.NET 6.0.9 (6.0.922.41905), X64 RyuJIT | |
// GC=Concurrent Workstation | |
// Job: DefaultJob | |
OverheadJitting 1: 1 op, 240800.00 ns, 240.8000 us/op | |
WorkloadJitting 1: 1 op, 371361500.00 ns, 371.3615 ms/op | |
WorkloadWarmup 1: 1 op, 302486200.00 ns, 302.4862 ms/op | |
WorkloadWarmup 2: 1 op, 309060500.00 ns, 309.0605 ms/op | |
WorkloadWarmup 3: 1 op, 318735900.00 ns, 318.7359 ms/op | |
WorkloadWarmup 4: 1 op, 305646000.00 ns, 305.6460 ms/op | |
WorkloadWarmup 5: 1 op, 317059500.00 ns, 317.0595 ms/op | |
WorkloadWarmup 6: 1 op, 303265000.00 ns, 303.2650 ms/op | |
// BeforeActualRun | |
WorkloadActual 1: 1 op, 301198000.00 ns, 301.1980 ms/op | |
WorkloadActual 2: 1 op, 326008200.00 ns, 326.0082 ms/op | |
WorkloadActual 3: 1 op, 305414900.00 ns, 305.4149 ms/op | |
WorkloadActual 4: 1 op, 304054600.00 ns, 304.0546 ms/op | |
WorkloadActual 5: 1 op, 337494300.00 ns, 337.4943 ms/op | |
WorkloadActual 6: 1 op, 308367700.00 ns, 308.3677 ms/op | |
WorkloadActual 7: 1 op, 318700600.00 ns, 318.7006 ms/op | |
WorkloadActual 8: 1 op, 303954100.00 ns, 303.9541 ms/op | |
WorkloadActual 9: 1 op, 312655700.00 ns, 312.6557 ms/op | |
WorkloadActual 10: 1 op, 306240400.00 ns, 306.2404 ms/op | |
WorkloadActual 11: 1 op, 301964800.00 ns, 301.9648 ms/op | |
WorkloadActual 12: 1 op, 330021300.00 ns, 330.0213 ms/op | |
WorkloadActual 13: 1 op, 302171600.00 ns, 302.1716 ms/op | |
WorkloadActual 14: 1 op, 301812100.00 ns, 301.8121 ms/op | |
WorkloadActual 15: 1 op, 313843900.00 ns, 313.8439 ms/op | |
WorkloadActual 16: 1 op, 301763900.00 ns, 301.7639 ms/op | |
WorkloadActual 17: 1 op, 319570200.00 ns, 319.5702 ms/op | |
WorkloadActual 18: 1 op, 365192400.00 ns, 365.1924 ms/op | |
WorkloadActual 19: 1 op, 326980500.00 ns, 326.9805 ms/op | |
WorkloadActual 20: 1 op, 306493200.00 ns, 306.4932 ms/op | |
WorkloadActual 21: 1 op, 333230800.00 ns, 333.2308 ms/op | |
WorkloadActual 22: 1 op, 319311900.00 ns, 319.3119 ms/op | |
WorkloadActual 23: 1 op, 307482100.00 ns, 307.4821 ms/op | |
WorkloadActual 24: 1 op, 312260400.00 ns, 312.2604 ms/op | |
WorkloadActual 25: 1 op, 311159000.00 ns, 311.1590 ms/op | |
WorkloadActual 26: 1 op, 303997100.00 ns, 303.9971 ms/op | |
WorkloadActual 27: 1 op, 300010000.00 ns, 300.0100 ms/op | |
WorkloadActual 28: 1 op, 326277800.00 ns, 326.2778 ms/op | |
WorkloadActual 29: 1 op, 304978000.00 ns, 304.9780 ms/op | |
WorkloadActual 30: 1 op, 305801500.00 ns, 305.8015 ms/op | |
WorkloadActual 31: 1 op, 320312400.00 ns, 320.3124 ms/op | |
WorkloadActual 32: 1 op, 303387900.00 ns, 303.3879 ms/op | |
WorkloadActual 33: 1 op, 320945700.00 ns, 320.9457 ms/op | |
WorkloadActual 34: 1 op, 312916700.00 ns, 312.9167 ms/op | |
WorkloadActual 35: 1 op, 304542700.00 ns, 304.5427 ms/op | |
WorkloadActual 36: 1 op, 305747200.00 ns, 305.7472 ms/op | |
WorkloadActual 37: 1 op, 311226700.00 ns, 311.2267 ms/op | |
// AfterActualRun | |
WorkloadResult 1: 1 op, 301198000.00 ns, 301.1980 ms/op | |
WorkloadResult 2: 1 op, 326008200.00 ns, 326.0082 ms/op | |
WorkloadResult 3: 1 op, 305414900.00 ns, 305.4149 ms/op | |
WorkloadResult 4: 1 op, 304054600.00 ns, 304.0546 ms/op | |
WorkloadResult 5: 1 op, 337494300.00 ns, 337.4943 ms/op | |
WorkloadResult 6: 1 op, 308367700.00 ns, 308.3677 ms/op | |
WorkloadResult 7: 1 op, 318700600.00 ns, 318.7006 ms/op | |
WorkloadResult 8: 1 op, 303954100.00 ns, 303.9541 ms/op | |
WorkloadResult 9: 1 op, 312655700.00 ns, 312.6557 ms/op | |
WorkloadResult 10: 1 op, 306240400.00 ns, 306.2404 ms/op | |
WorkloadResult 11: 1 op, 301964800.00 ns, 301.9648 ms/op | |
WorkloadResult 12: 1 op, 330021300.00 ns, 330.0213 ms/op | |
WorkloadResult 13: 1 op, 302171600.00 ns, 302.1716 ms/op | |
WorkloadResult 14: 1 op, 301812100.00 ns, 301.8121 ms/op | |
WorkloadResult 15: 1 op, 313843900.00 ns, 313.8439 ms/op | |
WorkloadResult 16: 1 op, 301763900.00 ns, 301.7639 ms/op | |
WorkloadResult 17: 1 op, 319570200.00 ns, 319.5702 ms/op | |
WorkloadResult 18: 1 op, 326980500.00 ns, 326.9805 ms/op | |
WorkloadResult 19: 1 op, 306493200.00 ns, 306.4932 ms/op | |
WorkloadResult 20: 1 op, 333230800.00 ns, 333.2308 ms/op | |
WorkloadResult 21: 1 op, 319311900.00 ns, 319.3119 ms/op | |
WorkloadResult 22: 1 op, 307482100.00 ns, 307.4821 ms/op | |
WorkloadResult 23: 1 op, 312260400.00 ns, 312.2604 ms/op | |
WorkloadResult 24: 1 op, 311159000.00 ns, 311.1590 ms/op | |
WorkloadResult 25: 1 op, 303997100.00 ns, 303.9971 ms/op | |
WorkloadResult 26: 1 op, 300010000.00 ns, 300.0100 ms/op | |
WorkloadResult 27: 1 op, 326277800.00 ns, 326.2778 ms/op | |
WorkloadResult 28: 1 op, 304978000.00 ns, 304.9780 ms/op | |
WorkloadResult 29: 1 op, 305801500.00 ns, 305.8015 ms/op | |
WorkloadResult 30: 1 op, 320312400.00 ns, 320.3124 ms/op | |
WorkloadResult 31: 1 op, 303387900.00 ns, 303.3879 ms/op | |
WorkloadResult 32: 1 op, 320945700.00 ns, 320.9457 ms/op | |
WorkloadResult 33: 1 op, 312916700.00 ns, 312.9167 ms/op | |
WorkloadResult 34: 1 op, 304542700.00 ns, 304.5427 ms/op | |
WorkloadResult 35: 1 op, 305747200.00 ns, 305.7472 ms/op | |
WorkloadResult 36: 1 op, 311226700.00 ns, 311.2267 ms/op | |
GC: 112 0 0 940000592 1 | |
Threading: 0 0 1 | |
// AfterAll | |
// Benchmark Process 3568 has exited with code 0. | |
Mean = 312.008 ms, StdErr = 1.694 ms (0.54%), N = 36, StdDev = 10.165 ms | |
Min = 300.010 ms, Q1 = 304.040 ms, Median = 307.925 ms, Q3 = 319.376 ms, Max = 337.494 ms | |
IQR = 15.336 ms, LowerFence = 281.036 ms, UpperFence = 342.381 ms | |
ConfidenceInterval = [305.925 ms; 318.092 ms] (CI 99.9%), Margin = 6.084 ms (1.95% of Mean) | |
Skewness = 0.85, Kurtosis = 2.57, MValue = 2 | |
// ************************** | |
// Benchmark: benchmarker.oldAnd: DefaultJob | |
// *** Execute *** | |
// Launch: 1 / 1 | |
// Execute: dotnet "e40dbc85-4fa0-48f1-b4dc-15032659eca7.dll" --benchmarkName "Program+benchmarker.oldAnd" --job "Default" --benchmarkId 1 in C:\Workspace\Projects\DotnetTest\FsTest\bin\Release\net6.0\e40dbc85-4fa0-48f1-b4dc-15032659eca7\bin\Release\net6.0 | |
// BeforeAnythingElse | |
// Benchmark Process Environment Information: | |
// Runtime=.NET 6.0.9 (6.0.922.41905), X64 RyuJIT | |
// GC=Concurrent Workstation | |
// Job: DefaultJob | |
OverheadJitting 1: 1 op, 193200.00 ns, 193.2000 us/op | |
WorkloadJitting 1: 1 op, 435971200.00 ns, 435.9712 ms/op | |
WorkloadWarmup 1: 1 op, 438684900.00 ns, 438.6849 ms/op | |
WorkloadWarmup 2: 1 op, 431451400.00 ns, 431.4514 ms/op | |
WorkloadWarmup 3: 1 op, 448810500.00 ns, 448.8105 ms/op | |
WorkloadWarmup 4: 1 op, 431620800.00 ns, 431.6208 ms/op | |
WorkloadWarmup 5: 1 op, 436107300.00 ns, 436.1073 ms/op | |
WorkloadWarmup 6: 1 op, 431096700.00 ns, 431.0967 ms/op | |
// BeforeActualRun | |
WorkloadActual 1: 1 op, 433570200.00 ns, 433.5702 ms/op | |
WorkloadActual 2: 1 op, 423252900.00 ns, 423.2529 ms/op | |
WorkloadActual 3: 1 op, 425689000.00 ns, 425.6890 ms/op | |
WorkloadActual 4: 1 op, 440557800.00 ns, 440.5578 ms/op | |
WorkloadActual 5: 1 op, 433418500.00 ns, 433.4185 ms/op | |
WorkloadActual 6: 1 op, 428267200.00 ns, 428.2672 ms/op | |
WorkloadActual 7: 1 op, 424662400.00 ns, 424.6624 ms/op | |
WorkloadActual 8: 1 op, 437552900.00 ns, 437.5529 ms/op | |
WorkloadActual 9: 1 op, 425428300.00 ns, 425.4283 ms/op | |
WorkloadActual 10: 1 op, 448484000.00 ns, 448.4840 ms/op | |
WorkloadActual 11: 1 op, 438110100.00 ns, 438.1101 ms/op | |
WorkloadActual 12: 1 op, 448124300.00 ns, 448.1243 ms/op | |
WorkloadActual 13: 1 op, 438338800.00 ns, 438.3388 ms/op | |
WorkloadActual 14: 1 op, 444143700.00 ns, 444.1437 ms/op | |
WorkloadActual 15: 1 op, 456293100.00 ns, 456.2931 ms/op | |
WorkloadActual 16: 1 op, 449752800.00 ns, 449.7528 ms/op | |
WorkloadActual 17: 1 op, 432577200.00 ns, 432.5772 ms/op | |
WorkloadActual 18: 1 op, 426484100.00 ns, 426.4841 ms/op | |
WorkloadActual 19: 1 op, 428526300.00 ns, 428.5263 ms/op | |
WorkloadActual 20: 1 op, 471505600.00 ns, 471.5056 ms/op | |
WorkloadActual 21: 1 op, 455192900.00 ns, 455.1929 ms/op | |
WorkloadActual 22: 1 op, 434668700.00 ns, 434.6687 ms/op | |
WorkloadActual 23: 1 op, 456723900.00 ns, 456.7239 ms/op | |
WorkloadActual 24: 1 op, 435952000.00 ns, 435.9520 ms/op | |
WorkloadActual 25: 1 op, 445902700.00 ns, 445.9027 ms/op | |
WorkloadActual 26: 1 op, 435706300.00 ns, 435.7063 ms/op | |
WorkloadActual 27: 1 op, 476470200.00 ns, 476.4702 ms/op | |
WorkloadActual 28: 1 op, 469567400.00 ns, 469.5674 ms/op | |
WorkloadActual 29: 1 op, 434760300.00 ns, 434.7603 ms/op | |
WorkloadActual 30: 1 op, 442554000.00 ns, 442.5540 ms/op | |
// AfterActualRun | |
WorkloadResult 1: 1 op, 433570200.00 ns, 433.5702 ms/op | |
WorkloadResult 2: 1 op, 423252900.00 ns, 423.2529 ms/op | |
WorkloadResult 3: 1 op, 425689000.00 ns, 425.6890 ms/op | |
WorkloadResult 4: 1 op, 440557800.00 ns, 440.5578 ms/op | |
WorkloadResult 5: 1 op, 433418500.00 ns, 433.4185 ms/op | |
WorkloadResult 6: 1 op, 428267200.00 ns, 428.2672 ms/op | |
WorkloadResult 7: 1 op, 424662400.00 ns, 424.6624 ms/op | |
WorkloadResult 8: 1 op, 437552900.00 ns, 437.5529 ms/op | |
WorkloadResult 9: 1 op, 425428300.00 ns, 425.4283 ms/op | |
WorkloadResult 10: 1 op, 448484000.00 ns, 448.4840 ms/op | |
WorkloadResult 11: 1 op, 438110100.00 ns, 438.1101 ms/op | |
WorkloadResult 12: 1 op, 448124300.00 ns, 448.1243 ms/op | |
WorkloadResult 13: 1 op, 438338800.00 ns, 438.3388 ms/op | |
WorkloadResult 14: 1 op, 444143700.00 ns, 444.1437 ms/op | |
WorkloadResult 15: 1 op, 456293100.00 ns, 456.2931 ms/op | |
WorkloadResult 16: 1 op, 449752800.00 ns, 449.7528 ms/op | |
WorkloadResult 17: 1 op, 432577200.00 ns, 432.5772 ms/op | |
WorkloadResult 18: 1 op, 426484100.00 ns, 426.4841 ms/op | |
WorkloadResult 19: 1 op, 428526300.00 ns, 428.5263 ms/op | |
WorkloadResult 20: 1 op, 471505600.00 ns, 471.5056 ms/op | |
WorkloadResult 21: 1 op, 455192900.00 ns, 455.1929 ms/op | |
WorkloadResult 22: 1 op, 434668700.00 ns, 434.6687 ms/op | |
WorkloadResult 23: 1 op, 456723900.00 ns, 456.7239 ms/op | |
WorkloadResult 24: 1 op, 435952000.00 ns, 435.9520 ms/op | |
WorkloadResult 25: 1 op, 445902700.00 ns, 445.9027 ms/op | |
WorkloadResult 26: 1 op, 435706300.00 ns, 435.7063 ms/op | |
WorkloadResult 27: 1 op, 469567400.00 ns, 469.5674 ms/op | |
WorkloadResult 28: 1 op, 434760300.00 ns, 434.7603 ms/op | |
WorkloadResult 29: 1 op, 442554000.00 ns, 442.5540 ms/op | |
GC: 28 0 0 240000504 1 | |
Threading: 0 0 1 | |
// AfterAll | |
// Benchmark Process 29888 has exited with code 0. | |
Mean = 440.199 ms, StdErr = 2.370 ms (0.54%), N = 29, StdDev = 12.763 ms | |
Min = 423.253 ms, Q1 = 432.577 ms, Median = 437.553 ms, Q3 = 448.124 ms, Max = 471.506 ms | |
IQR = 15.547 ms, LowerFence = 409.257 ms, UpperFence = 471.445 ms | |
ConfidenceInterval = [431.491 ms; 448.906 ms] (CI 99.9%), Margin = 8.707 ms (1.98% of Mean) | |
Skewness = 0.79, Kurtosis = 2.9, MValue = 2 | |
// ************************** | |
// Benchmark: benchmarker.oldAnd5: DefaultJob | |
// *** Execute *** | |
// Launch: 1 / 1 | |
// Execute: dotnet "e40dbc85-4fa0-48f1-b4dc-15032659eca7.dll" --benchmarkName "Program+benchmarker.oldAnd5" --job "Default" --benchmarkId 2 in C:\Workspace\Projects\DotnetTest\FsTest\bin\Release\net6.0\e40dbc85-4fa0-48f1-b4dc-15032659eca7\bin\Release\net6.0 | |
// BeforeAnythingElse | |
// Benchmark Process Environment Information: | |
// Runtime=.NET 6.0.9 (6.0.922.41905), X64 RyuJIT | |
// GC=Concurrent Workstation | |
// Job: DefaultJob | |
OverheadJitting 1: 1 op, 199000.00 ns, 199.0000 us/op | |
WorkloadJitting 1: 1 op, 101021800.00 ns, 101.0218 ms/op | |
WorkloadPilot 1: 2 op, 195362100.00 ns, 97.6810 ms/op | |
WorkloadPilot 2: 3 op, 292026900.00 ns, 97.3423 ms/op | |
WorkloadPilot 3: 4 op, 379325800.00 ns, 94.8315 ms/op | |
WorkloadPilot 4: 5 op, 484387900.00 ns, 96.8776 ms/op | |
WorkloadPilot 5: 6 op, 572215300.00 ns, 95.3692 ms/op | |
WorkloadWarmup 1: 6 op, 591180300.00 ns, 98.5301 ms/op | |
WorkloadWarmup 2: 6 op, 600920100.00 ns, 100.1534 ms/op | |
WorkloadWarmup 3: 6 op, 599701100.00 ns, 99.9502 ms/op | |
WorkloadWarmup 4: 6 op, 587956400.00 ns, 97.9927 ms/op | |
WorkloadWarmup 5: 6 op, 599700600.00 ns, 99.9501 ms/op | |
WorkloadWarmup 6: 6 op, 651902900.00 ns, 108.6505 ms/op | |
WorkloadWarmup 7: 6 op, 623939100.00 ns, 103.9899 ms/op | |
// BeforeActualRun | |
WorkloadActual 1: 6 op, 588177900.00 ns, 98.0297 ms/op | |
WorkloadActual 2: 6 op, 596057400.00 ns, 99.3429 ms/op | |
WorkloadActual 3: 6 op, 600554100.00 ns, 100.0923 ms/op | |
WorkloadActual 4: 6 op, 615620600.00 ns, 102.6034 ms/op | |
WorkloadActual 5: 6 op, 587187100.00 ns, 97.8645 ms/op | |
WorkloadActual 6: 6 op, 597545200.00 ns, 99.5909 ms/op | |
WorkloadActual 7: 6 op, 584804200.00 ns, 97.4674 ms/op | |
WorkloadActual 8: 6 op, 601144800.00 ns, 100.1908 ms/op | |
WorkloadActual 9: 6 op, 615729300.00 ns, 102.6215 ms/op | |
WorkloadActual 10: 6 op, 600686500.00 ns, 100.1144 ms/op | |
WorkloadActual 11: 6 op, 611725400.00 ns, 101.9542 ms/op | |
WorkloadActual 12: 6 op, 629314100.00 ns, 104.8857 ms/op | |
WorkloadActual 13: 6 op, 589294500.00 ns, 98.2157 ms/op | |
WorkloadActual 14: 6 op, 597437200.00 ns, 99.5729 ms/op | |
WorkloadActual 15: 6 op, 583125400.00 ns, 97.1876 ms/op | |
WorkloadActual 16: 6 op, 595428800.00 ns, 99.2381 ms/op | |
WorkloadActual 17: 6 op, 600673700.00 ns, 100.1123 ms/op | |
// AfterActualRun | |
WorkloadResult 1: 6 op, 588177900.00 ns, 98.0297 ms/op | |
WorkloadResult 2: 6 op, 596057400.00 ns, 99.3429 ms/op | |
WorkloadResult 3: 6 op, 600554100.00 ns, 100.0923 ms/op | |
WorkloadResult 4: 6 op, 615620600.00 ns, 102.6034 ms/op | |
WorkloadResult 5: 6 op, 587187100.00 ns, 97.8645 ms/op | |
WorkloadResult 6: 6 op, 597545200.00 ns, 99.5909 ms/op | |
WorkloadResult 7: 6 op, 584804200.00 ns, 97.4674 ms/op | |
WorkloadResult 8: 6 op, 601144800.00 ns, 100.1908 ms/op | |
WorkloadResult 9: 6 op, 615729300.00 ns, 102.6215 ms/op | |
WorkloadResult 10: 6 op, 600686500.00 ns, 100.1144 ms/op | |
WorkloadResult 11: 6 op, 611725400.00 ns, 101.9542 ms/op | |
WorkloadResult 12: 6 op, 589294500.00 ns, 98.2157 ms/op | |
WorkloadResult 13: 6 op, 597437200.00 ns, 99.5729 ms/op | |
WorkloadResult 14: 6 op, 583125400.00 ns, 97.1876 ms/op | |
WorkloadResult 15: 6 op, 595428800.00 ns, 99.2381 ms/op | |
WorkloadResult 16: 6 op, 600673700.00 ns, 100.1123 ms/op | |
GC: 0 0 0 664 6 | |
Threading: 0 0 6 | |
// AfterAll | |
// Benchmark Process 18108 has exited with code 0. | |
Mean = 99.637 ms, StdErr = 0.422 ms (0.42%), N = 16, StdDev = 1.688 ms | |
Min = 97.188 ms, Q1 = 98.169 ms, Median = 99.582 ms, Q3 = 100.134 ms, Max = 102.622 ms | |
IQR = 1.964 ms, LowerFence = 95.223 ms, UpperFence = 103.080 ms | |
ConfidenceInterval = [97.919 ms; 101.356 ms] (CI 99.9%), Margin = 1.719 ms (1.73% of Mean) | |
Skewness = 0.36, Kurtosis = 2.04, MValue = 2 | |
// ************************** | |
// Benchmark: benchmarker.efficient: DefaultJob | |
// *** Execute *** | |
// Launch: 1 / 1 | |
// Execute: dotnet "e40dbc85-4fa0-48f1-b4dc-15032659eca7.dll" --benchmarkName "Program+benchmarker.efficient" --job "Default" --benchmarkId 3 in C:\Workspace\Projects\DotnetTest\FsTest\bin\Release\net6.0\e40dbc85-4fa0-48f1-b4dc-15032659eca7\bin\Release\net6.0 | |
// BeforeAnythingElse | |
// Benchmark Process Environment Information: | |
// Runtime=.NET 6.0.9 (6.0.922.41905), X64 RyuJIT | |
// GC=Concurrent Workstation | |
// Job: DefaultJob | |
OverheadJitting 1: 1 op, 253600.00 ns, 253.6000 us/op | |
WorkloadJitting 1: 1 op, 18624900.00 ns, 18.6249 ms/op | |
OverheadJitting 2: 16 op, 363400.00 ns, 22.7125 us/op | |
WorkloadJitting 2: 16 op, 271088500.00 ns, 16.9430 ms/op | |
WorkloadPilot 1: 16 op, 239761700.00 ns, 14.9851 ms/op | |
WorkloadPilot 2: 32 op, 491009900.00 ns, 15.3441 ms/op | |
WorkloadPilot 3: 64 op, 983399800.00 ns, 15.3656 ms/op | |
OverheadWarmup 1: 64 op, 1600.00 ns, 25.0000 ns/op | |
OverheadWarmup 2: 64 op, 400.00 ns, 6.2500 ns/op | |
OverheadWarmup 3: 64 op, 500.00 ns, 7.8125 ns/op | |
OverheadWarmup 4: 64 op, 500.00 ns, 7.8125 ns/op | |
OverheadWarmup 5: 64 op, 400.00 ns, 6.2500 ns/op | |
OverheadWarmup 6: 64 op, 400.00 ns, 6.2500 ns/op | |
OverheadActual 1: 64 op, 500.00 ns, 7.8125 ns/op | |
OverheadActual 2: 64 op, 500.00 ns, 7.8125 ns/op | |
OverheadActual 3: 64 op, 500.00 ns, 7.8125 ns/op | |
OverheadActual 4: 64 op, 400.00 ns, 6.2500 ns/op | |
OverheadActual 5: 64 op, 500.00 ns, 7.8125 ns/op | |
OverheadActual 6: 64 op, 500.00 ns, 7.8125 ns/op | |
OverheadActual 7: 64 op, 900.00 ns, 14.0625 ns/op | |
OverheadActual 8: 64 op, 400.00 ns, 6.2500 ns/op | |
OverheadActual 9: 64 op, 600.00 ns, 9.3750 ns/op | |
OverheadActual 10: 64 op, 500.00 ns, 7.8125 ns/op | |
OverheadActual 11: 64 op, 500.00 ns, 7.8125 ns/op | |
OverheadActual 12: 64 op, 800.00 ns, 12.5000 ns/op | |
OverheadActual 13: 64 op, 500.00 ns, 7.8125 ns/op | |
OverheadActual 14: 64 op, 400.00 ns, 6.2500 ns/op | |
OverheadActual 15: 64 op, 600.00 ns, 9.3750 ns/op | |
OverheadActual 16: 64 op, 500.00 ns, 7.8125 ns/op | |
OverheadActual 17: 64 op, 500.00 ns, 7.8125 ns/op | |
OverheadActual 18: 64 op, 600.00 ns, 9.3750 ns/op | |
OverheadActual 19: 64 op, 700.00 ns, 10.9375 ns/op | |
OverheadActual 20: 64 op, 800.00 ns, 12.5000 ns/op | |
WorkloadWarmup 1: 64 op, 987569000.00 ns, 15.4308 ms/op | |
WorkloadWarmup 2: 64 op, 982602100.00 ns, 15.3532 ms/op | |
WorkloadWarmup 3: 64 op, 998872900.00 ns, 15.6074 ms/op | |
WorkloadWarmup 4: 64 op, 1063588800.00 ns, 16.6186 ms/op | |
WorkloadWarmup 5: 64 op, 1152566700.00 ns, 18.0089 ms/op | |
WorkloadWarmup 6: 64 op, 1024687800.00 ns, 16.0107 ms/op | |
WorkloadWarmup 7: 64 op, 1015369700.00 ns, 15.8652 ms/op | |
WorkloadWarmup 8: 64 op, 994930300.00 ns, 15.5458 ms/op | |
WorkloadWarmup 9: 64 op, 1002879300.00 ns, 15.6700 ms/op | |
WorkloadWarmup 10: 64 op, 1015885600.00 ns, 15.8732 ms/op | |
WorkloadWarmup 11: 64 op, 1017688200.00 ns, 15.9014 ms/op | |
WorkloadWarmup 12: 64 op, 1024867800.00 ns, 16.0136 ms/op | |
WorkloadWarmup 13: 64 op, 1013012400.00 ns, 15.8283 ms/op | |
// BeforeActualRun | |
WorkloadActual 1: 64 op, 1014189700.00 ns, 15.8467 ms/op | |
WorkloadActual 2: 64 op, 1050154400.00 ns, 16.4087 ms/op | |
WorkloadActual 3: 64 op, 991043300.00 ns, 15.4851 ms/op | |
WorkloadActual 4: 64 op, 1041555500.00 ns, 16.2743 ms/op | |
WorkloadActual 5: 64 op, 986194700.00 ns, 15.4093 ms/op | |
WorkloadActual 6: 64 op, 999916400.00 ns, 15.6237 ms/op | |
WorkloadActual 7: 64 op, 1016397800.00 ns, 15.8812 ms/op | |
WorkloadActual 8: 64 op, 985412000.00 ns, 15.3971 ms/op | |
WorkloadActual 9: 64 op, 1003422600.00 ns, 15.6785 ms/op | |
WorkloadActual 10: 64 op, 991639600.00 ns, 15.4944 ms/op | |
WorkloadActual 11: 64 op, 1012609300.00 ns, 15.8220 ms/op | |
WorkloadActual 12: 64 op, 1012632000.00 ns, 15.8224 ms/op | |
WorkloadActual 13: 64 op, 1006936300.00 ns, 15.7334 ms/op | |
WorkloadActual 14: 64 op, 1008642800.00 ns, 15.7600 ms/op | |
WorkloadActual 15: 64 op, 1004947900.00 ns, 15.7023 ms/op | |
// AfterActualRun | |
WorkloadResult 1: 64 op, 1014189200.00 ns, 15.8467 ms/op | |
WorkloadResult 2: 64 op, 991042800.00 ns, 15.4850 ms/op | |
WorkloadResult 3: 64 op, 986194200.00 ns, 15.4093 ms/op | |
WorkloadResult 4: 64 op, 999915900.00 ns, 15.6237 ms/op | |
WorkloadResult 5: 64 op, 1016397300.00 ns, 15.8812 ms/op | |
WorkloadResult 6: 64 op, 985411500.00 ns, 15.3971 ms/op | |
WorkloadResult 7: 64 op, 1003422100.00 ns, 15.6785 ms/op | |
WorkloadResult 8: 64 op, 991639100.00 ns, 15.4944 ms/op | |
WorkloadResult 9: 64 op, 1012608800.00 ns, 15.8220 ms/op | |
WorkloadResult 10: 64 op, 1012631500.00 ns, 15.8224 ms/op | |
WorkloadResult 11: 64 op, 1006935800.00 ns, 15.7334 ms/op | |
WorkloadResult 12: 64 op, 1008642300.00 ns, 15.7600 ms/op | |
WorkloadResult 13: 64 op, 1004947400.00 ns, 15.7023 ms/op | |
GC: 0 0 0 480 64 | |
Threading: 0 0 64 | |
// AfterAll | |
// Benchmark Process 12688 has exited with code 0. | |
Mean = 15.666 ms, StdErr = 0.047 ms (0.30%), N = 13, StdDev = 0.170 ms | |
Min = 15.397 ms, Q1 = 15.494 ms, Median = 15.702 ms, Q3 = 15.822 ms, Max = 15.881 ms | |
IQR = 0.328 ms, LowerFence = 15.003 ms, UpperFence = 16.313 ms | |
ConfidenceInterval = [15.463 ms; 15.869 ms] (CI 99.9%), Margin = 0.203 ms (1.30% of Mean) | |
Skewness = -0.36, Kurtosis = 1.49, MValue = 2 | |
// ************************** | |
// Benchmark: benchmarker.efficient2: DefaultJob | |
// *** Execute *** | |
// Launch: 1 / 1 | |
// Execute: dotnet "e40dbc85-4fa0-48f1-b4dc-15032659eca7.dll" --benchmarkName "Program+benchmarker.efficient2" --job "Default" --benchmarkId 4 in C:\Workspace\Projects\DotnetTest\FsTest\bin\Release\net6.0\e40dbc85-4fa0-48f1-b4dc-15032659eca7\bin\Release\net6.0 | |
// BeforeAnythingElse | |
// Benchmark Process Environment Information: | |
// Runtime=.NET 6.0.9 (6.0.922.41905), X64 RyuJIT | |
// GC=Concurrent Workstation | |
// Job: DefaultJob | |
OverheadJitting 1: 1 op, 261100.00 ns, 261.1000 us/op | |
WorkloadJitting 1: 1 op, 16795900.00 ns, 16.7959 ms/op | |
OverheadJitting 2: 16 op, 421900.00 ns, 26.3687 us/op | |
WorkloadJitting 2: 16 op, 221002600.00 ns, 13.8127 ms/op | |
WorkloadPilot 1: 16 op, 216778300.00 ns, 13.5486 ms/op | |
WorkloadPilot 2: 32 op, 473267100.00 ns, 14.7896 ms/op | |
WorkloadPilot 3: 64 op, 876741500.00 ns, 13.6991 ms/op | |
OverheadWarmup 1: 64 op, 2300.00 ns, 35.9375 ns/op | |
OverheadWarmup 2: 64 op, 500.00 ns, 7.8125 ns/op | |
OverheadWarmup 3: 64 op, 600.00 ns, 9.3750 ns/op | |
OverheadWarmup 4: 64 op, 500.00 ns, 7.8125 ns/op | |
OverheadWarmup 5: 64 op, 500.00 ns, 7.8125 ns/op | |
OverheadWarmup 6: 64 op, 500.00 ns, 7.8125 ns/op | |
OverheadActual 1: 64 op, 400.00 ns, 6.2500 ns/op | |
OverheadActual 2: 64 op, 500.00 ns, 7.8125 ns/op | |
OverheadActual 3: 64 op, 500.00 ns, 7.8125 ns/op | |
OverheadActual 4: 64 op, 400.00 ns, 6.2500 ns/op | |
OverheadActual 5: 64 op, 400.00 ns, 6.2500 ns/op | |
OverheadActual 6: 64 op, 600.00 ns, 9.3750 ns/op | |
OverheadActual 7: 64 op, 500.00 ns, 7.8125 ns/op | |
OverheadActual 8: 64 op, 500.00 ns, 7.8125 ns/op | |
OverheadActual 9: 64 op, 400.00 ns, 6.2500 ns/op | |
OverheadActual 10: 64 op, 400.00 ns, 6.2500 ns/op | |
OverheadActual 11: 64 op, 500.00 ns, 7.8125 ns/op | |
OverheadActual 12: 64 op, 500.00 ns, 7.8125 ns/op | |
OverheadActual 13: 64 op, 400.00 ns, 6.2500 ns/op | |
OverheadActual 14: 64 op, 400.00 ns, 6.2500 ns/op | |
OverheadActual 15: 64 op, 400.00 ns, 6.2500 ns/op | |
OverheadActual 16: 64 op, 500.00 ns, 7.8125 ns/op | |
OverheadActual 17: 64 op, 500.00 ns, 7.8125 ns/op | |
OverheadActual 18: 64 op, 500.00 ns, 7.8125 ns/op | |
OverheadActual 19: 64 op, 400.00 ns, 6.2500 ns/op | |
OverheadActual 20: 64 op, 1200.00 ns, 18.7500 ns/op | |
WorkloadWarmup 1: 64 op, 893231800.00 ns, 13.9567 ms/op | |
WorkloadWarmup 2: 64 op, 877971400.00 ns, 13.7183 ms/op | |
WorkloadWarmup 3: 64 op, 891409400.00 ns, 13.9283 ms/op | |
WorkloadWarmup 4: 64 op, 876350300.00 ns, 13.6930 ms/op | |
WorkloadWarmup 5: 64 op, 906409800.00 ns, 14.1627 ms/op | |
WorkloadWarmup 6: 64 op, 895097100.00 ns, 13.9859 ms/op | |
// BeforeActualRun | |
WorkloadActual 1: 64 op, 903317300.00 ns, 14.1143 ms/op | |
WorkloadActual 2: 64 op, 906945100.00 ns, 14.1710 ms/op | |
WorkloadActual 3: 64 op, 911465300.00 ns, 14.2416 ms/op | |
WorkloadActual 4: 64 op, 914492500.00 ns, 14.2889 ms/op | |
WorkloadActual 5: 64 op, 924223100.00 ns, 14.4410 ms/op | |
WorkloadActual 6: 64 op, 914213500.00 ns, 14.2846 ms/op | |
WorkloadActual 7: 64 op, 885128400.00 ns, 13.8301 ms/op | |
WorkloadActual 8: 64 op, 911955400.00 ns, 14.2493 ms/op | |
WorkloadActual 9: 64 op, 908607400.00 ns, 14.1970 ms/op | |
WorkloadActual 10: 64 op, 930277000.00 ns, 14.5356 ms/op | |
WorkloadActual 11: 64 op, 911458900.00 ns, 14.2415 ms/op | |
WorkloadActual 12: 64 op, 909132800.00 ns, 14.2052 ms/op | |
WorkloadActual 13: 64 op, 903540400.00 ns, 14.1178 ms/op | |
WorkloadActual 14: 64 op, 899302700.00 ns, 14.0516 ms/op | |
WorkloadActual 15: 64 op, 918961300.00 ns, 14.3588 ms/op | |
// AfterActualRun | |
WorkloadResult 1: 64 op, 903316800.00 ns, 14.1143 ms/op | |
WorkloadResult 2: 64 op, 906944600.00 ns, 14.1710 ms/op | |
WorkloadResult 3: 64 op, 911464800.00 ns, 14.2416 ms/op | |
WorkloadResult 4: 64 op, 914492000.00 ns, 14.2889 ms/op | |
WorkloadResult 5: 64 op, 924222600.00 ns, 14.4410 ms/op | |
WorkloadResult 6: 64 op, 914213000.00 ns, 14.2846 ms/op | |
WorkloadResult 7: 64 op, 885127900.00 ns, 13.8301 ms/op | |
WorkloadResult 8: 64 op, 911954900.00 ns, 14.2493 ms/op | |
WorkloadResult 9: 64 op, 908606900.00 ns, 14.1970 ms/op | |
WorkloadResult 10: 64 op, 911458400.00 ns, 14.2415 ms/op | |
WorkloadResult 11: 64 op, 909132300.00 ns, 14.2052 ms/op | |
WorkloadResult 12: 64 op, 903539900.00 ns, 14.1178 ms/op | |
WorkloadResult 13: 64 op, 899302200.00 ns, 14.0516 ms/op | |
WorkloadResult 14: 64 op, 918960800.00 ns, 14.3588 ms/op | |
GC: 0 0 0 528 64 | |
Threading: 0 0 64 | |
// AfterAll | |
// Benchmark Process 27348 has exited with code 0. | |
Mean = 14.199 ms, StdErr = 0.039 ms (0.28%), N = 14, StdDev = 0.146 ms | |
Min = 13.830 ms, Q1 = 14.131 ms, Median = 14.223 ms, Q3 = 14.276 ms, Max = 14.441 ms | |
IQR = 0.145 ms, LowerFence = 13.914 ms, UpperFence = 14.493 ms | |
ConfidenceInterval = [14.035 ms; 14.364 ms] (CI 99.9%), Margin = 0.165 ms (1.16% of Mean) | |
Skewness = -0.8, Kurtosis = 3.65, MValue = 2 | |
// ************************** | |
// Benchmark: benchmarker.efficientAnd: DefaultJob | |
// *** Execute *** | |
// Launch: 1 / 1 | |
// Execute: dotnet "e40dbc85-4fa0-48f1-b4dc-15032659eca7.dll" --benchmarkName "Program+benchmarker.efficientAnd" --job "Default" --benchmarkId 5 in C:\Workspace\Projects\DotnetTest\FsTest\bin\Release\net6.0\e40dbc85-4fa0-48f1-b4dc-15032659eca7\bin\Release\net6.0 | |
// BeforeAnythingElse | |
// Benchmark Process Environment Information: | |
// Runtime=.NET 6.0.9 (6.0.922.41905), X64 RyuJIT | |
// GC=Concurrent Workstation | |
// Job: DefaultJob | |
OverheadJitting 1: 1 op, 204900.00 ns, 204.9000 us/op | |
WorkloadJitting 1: 1 op, 417843100.00 ns, 417.8431 ms/op | |
WorkloadWarmup 1: 1 op, 406531700.00 ns, 406.5317 ms/op | |
WorkloadWarmup 2: 1 op, 404956900.00 ns, 404.9569 ms/op | |
WorkloadWarmup 3: 1 op, 404623000.00 ns, 404.6230 ms/op | |
WorkloadWarmup 4: 1 op, 418298300.00 ns, 418.2983 ms/op | |
WorkloadWarmup 5: 1 op, 404885200.00 ns, 404.8852 ms/op | |
WorkloadWarmup 6: 1 op, 405885800.00 ns, 405.8858 ms/op | |
WorkloadWarmup 7: 1 op, 404638000.00 ns, 404.6380 ms/op | |
// BeforeActualRun | |
WorkloadActual 1: 1 op, 411534700.00 ns, 411.5347 ms/op | |
WorkloadActual 2: 1 op, 407860500.00 ns, 407.8605 ms/op | |
WorkloadActual 3: 1 op, 414312100.00 ns, 414.3121 ms/op | |
WorkloadActual 4: 1 op, 411081700.00 ns, 411.0817 ms/op | |
WorkloadActual 5: 1 op, 412231700.00 ns, 412.2317 ms/op | |
WorkloadActual 6: 1 op, 406593200.00 ns, 406.5932 ms/op | |
WorkloadActual 7: 1 op, 405555500.00 ns, 405.5555 ms/op | |
WorkloadActual 8: 1 op, 405699100.00 ns, 405.6991 ms/op | |
WorkloadActual 9: 1 op, 418109300.00 ns, 418.1093 ms/op | |
WorkloadActual 10: 1 op, 406420300.00 ns, 406.4203 ms/op | |
WorkloadActual 11: 1 op, 406160200.00 ns, 406.1602 ms/op | |
WorkloadActual 12: 1 op, 406133600.00 ns, 406.1336 ms/op | |
WorkloadActual 13: 1 op, 412494900.00 ns, 412.4949 ms/op | |
WorkloadActual 14: 1 op, 408588600.00 ns, 408.5886 ms/op | |
WorkloadActual 15: 1 op, 410920500.00 ns, 410.9205 ms/op | |
// AfterActualRun | |
WorkloadResult 1: 1 op, 411534700.00 ns, 411.5347 ms/op | |
WorkloadResult 2: 1 op, 407860500.00 ns, 407.8605 ms/op | |
WorkloadResult 3: 1 op, 414312100.00 ns, 414.3121 ms/op | |
WorkloadResult 4: 1 op, 411081700.00 ns, 411.0817 ms/op | |
WorkloadResult 5: 1 op, 412231700.00 ns, 412.2317 ms/op | |
WorkloadResult 6: 1 op, 406593200.00 ns, 406.5932 ms/op | |
WorkloadResult 7: 1 op, 405555500.00 ns, 405.5555 ms/op | |
WorkloadResult 8: 1 op, 405699100.00 ns, 405.6991 ms/op | |
WorkloadResult 9: 1 op, 418109300.00 ns, 418.1093 ms/op | |
WorkloadResult 10: 1 op, 406420300.00 ns, 406.4203 ms/op | |
WorkloadResult 11: 1 op, 406160200.00 ns, 406.1602 ms/op | |
WorkloadResult 12: 1 op, 406133600.00 ns, 406.1336 ms/op | |
WorkloadResult 13: 1 op, 412494900.00 ns, 412.4949 ms/op | |
WorkloadResult 14: 1 op, 408588600.00 ns, 408.5886 ms/op | |
WorkloadResult 15: 1 op, 410920500.00 ns, 410.9205 ms/op | |
GC: 0 0 0 480 1 | |
Threading: 0 0 1 | |
// AfterAll | |
// Benchmark Process 22164 has exited with code 0. | |
Mean = 409.580 ms, StdErr = 0.967 ms (0.24%), N = 15, StdDev = 3.744 ms | |
Min = 405.555 ms, Q1 = 406.290 ms, Median = 408.589 ms, Q3 = 411.883 ms, Max = 418.109 ms | |
IQR = 5.593 ms, LowerFence = 397.901 ms, UpperFence = 420.273 ms | |
ConfidenceInterval = [405.577 ms; 413.582 ms] (CI 99.9%), Margin = 4.002 ms (0.98% of Mean) | |
Skewness = 0.65, Kurtosis = 2.34, MValue = 2 | |
// ************************** | |
// Benchmark: benchmarker.efficientAnd5: DefaultJob | |
// *** Execute *** | |
// Launch: 1 / 1 | |
// Execute: dotnet "e40dbc85-4fa0-48f1-b4dc-15032659eca7.dll" --benchmarkName "Program+benchmarker.efficientAnd5" --job "Default" --benchmarkId 6 in C:\Workspace\Projects\DotnetTest\FsTest\bin\Release\net6.0\e40dbc85-4fa0-48f1-b4dc-15032659eca7\bin\Release\net6.0 | |
// BeforeAnythingElse | |
// Benchmark Process Environment Information: | |
// Runtime=.NET 6.0.9 (6.0.922.41905), X64 RyuJIT | |
// GC=Concurrent Workstation | |
// Job: DefaultJob | |
OverheadJitting 1: 1 op, 238500.00 ns, 238.5000 us/op | |
WorkloadJitting 1: 1 op, 30537700.00 ns, 30.5377 ms/op | |
OverheadJitting 2: 16 op, 326800.00 ns, 20.4250 us/op | |
WorkloadJitting 2: 16 op, 471344200.00 ns, 29.4590 ms/op | |
WorkloadPilot 1: 16 op, 445928500.00 ns, 27.8705 ms/op | |
WorkloadPilot 2: 32 op, 901550900.00 ns, 28.1735 ms/op | |
OverheadWarmup 1: 32 op, 2000.00 ns, 62.5000 ns/op | |
OverheadWarmup 2: 32 op, 400.00 ns, 12.5000 ns/op | |
OverheadWarmup 3: 32 op, 600.00 ns, 18.7500 ns/op | |
OverheadWarmup 4: 32 op, 400.00 ns, 12.5000 ns/op | |
OverheadWarmup 5: 32 op, 500.00 ns, 15.6250 ns/op | |
OverheadWarmup 6: 32 op, 300.00 ns, 9.3750 ns/op | |
OverheadActual 1: 32 op, 400.00 ns, 12.5000 ns/op | |
OverheadActual 2: 32 op, 400.00 ns, 12.5000 ns/op | |
OverheadActual 3: 32 op, 400.00 ns, 12.5000 ns/op | |
OverheadActual 4: 32 op, 500.00 ns, 15.6250 ns/op | |
OverheadActual 5: 32 op, 400.00 ns, 12.5000 ns/op | |
OverheadActual 6: 32 op, 300.00 ns, 9.3750 ns/op | |
OverheadActual 7: 32 op, 300.00 ns, 9.3750 ns/op | |
OverheadActual 8: 32 op, 300.00 ns, 9.3750 ns/op | |
OverheadActual 9: 32 op, 400.00 ns, 12.5000 ns/op | |
OverheadActual 10: 32 op, 400.00 ns, 12.5000 ns/op | |
OverheadActual 11: 32 op, 400.00 ns, 12.5000 ns/op | |
OverheadActual 12: 32 op, 300.00 ns, 9.3750 ns/op | |
OverheadActual 13: 32 op, 600.00 ns, 18.7500 ns/op | |
OverheadActual 14: 32 op, 500.00 ns, 15.6250 ns/op | |
OverheadActual 15: 32 op, 500.00 ns, 15.6250 ns/op | |
OverheadActual 16: 32 op, 400.00 ns, 12.5000 ns/op | |
OverheadActual 17: 32 op, 400.00 ns, 12.5000 ns/op | |
OverheadActual 18: 32 op, 500.00 ns, 15.6250 ns/op | |
OverheadActual 19: 32 op, 600.00 ns, 18.7500 ns/op | |
OverheadActual 20: 32 op, 500.00 ns, 15.6250 ns/op | |
WorkloadWarmup 1: 32 op, 918289700.00 ns, 28.6966 ms/op | |
WorkloadWarmup 2: 32 op, 926214500.00 ns, 28.9442 ms/op | |
WorkloadWarmup 3: 32 op, 895465700.00 ns, 27.9833 ms/op | |
WorkloadWarmup 4: 32 op, 893759500.00 ns, 27.9300 ms/op | |
WorkloadWarmup 5: 32 op, 936415600.00 ns, 29.2630 ms/op | |
WorkloadWarmup 6: 32 op, 887867900.00 ns, 27.7459 ms/op | |
// BeforeActualRun | |
WorkloadActual 1: 32 op, 889600400.00 ns, 27.8000 ms/op | |
WorkloadActual 2: 32 op, 886727800.00 ns, 27.7102 ms/op | |
WorkloadActual 3: 32 op, 879754300.00 ns, 27.4923 ms/op | |
WorkloadActual 4: 32 op, 887815500.00 ns, 27.7442 ms/op | |
WorkloadActual 5: 32 op, 867897900.00 ns, 27.1218 ms/op | |
WorkloadActual 6: 32 op, 896672900.00 ns, 28.0210 ms/op | |
WorkloadActual 7: 32 op, 898033800.00 ns, 28.0636 ms/op | |
WorkloadActual 8: 32 op, 889075400.00 ns, 27.7836 ms/op | |
WorkloadActual 9: 32 op, 907207300.00 ns, 28.3502 ms/op | |
WorkloadActual 10: 32 op, 1000374700.00 ns, 31.2617 ms/op | |
WorkloadActual 11: 32 op, 966527800.00 ns, 30.2040 ms/op | |
WorkloadActual 12: 32 op, 949449900.00 ns, 29.6703 ms/op | |
WorkloadActual 13: 32 op, 938657000.00 ns, 29.3330 ms/op | |
WorkloadActual 14: 32 op, 913967500.00 ns, 28.5615 ms/op | |
WorkloadActual 15: 32 op, 889990600.00 ns, 27.8122 ms/op | |
WorkloadActual 16: 32 op, 878714900.00 ns, 27.4598 ms/op | |
WorkloadActual 17: 32 op, 882759400.00 ns, 27.5862 ms/op | |
WorkloadActual 18: 32 op, 917719200.00 ns, 28.6787 ms/op | |
WorkloadActual 19: 32 op, 861346100.00 ns, 26.9171 ms/op | |
WorkloadActual 20: 32 op, 929824000.00 ns, 29.0570 ms/op | |
WorkloadActual 21: 32 op, 898899400.00 ns, 28.0906 ms/op | |
WorkloadActual 22: 32 op, 905622400.00 ns, 28.3007 ms/op | |
WorkloadActual 23: 32 op, 899546300.00 ns, 28.1108 ms/op | |
WorkloadActual 24: 32 op, 863100800.00 ns, 26.9719 ms/op | |
WorkloadActual 25: 32 op, 914005100.00 ns, 28.5627 ms/op | |
// AfterActualRun | |
WorkloadResult 1: 32 op, 889600000.00 ns, 27.8000 ms/op | |
WorkloadResult 2: 32 op, 886727400.00 ns, 27.7102 ms/op | |
WorkloadResult 3: 32 op, 879753900.00 ns, 27.4923 ms/op | |
WorkloadResult 4: 32 op, 887815100.00 ns, 27.7442 ms/op | |
WorkloadResult 5: 32 op, 867897500.00 ns, 27.1218 ms/op | |
WorkloadResult 6: 32 op, 896672500.00 ns, 28.0210 ms/op | |
WorkloadResult 7: 32 op, 898033400.00 ns, 28.0635 ms/op | |
WorkloadResult 8: 32 op, 889075000.00 ns, 27.7836 ms/op | |
WorkloadResult 9: 32 op, 907206900.00 ns, 28.3502 ms/op | |
WorkloadResult 10: 32 op, 949449500.00 ns, 29.6703 ms/op | |
WorkloadResult 11: 32 op, 938656600.00 ns, 29.3330 ms/op | |
WorkloadResult 12: 32 op, 913967100.00 ns, 28.5615 ms/op | |
WorkloadResult 13: 32 op, 889990200.00 ns, 27.8122 ms/op | |
WorkloadResult 14: 32 op, 878714500.00 ns, 27.4598 ms/op | |
WorkloadResult 15: 32 op, 882759000.00 ns, 27.5862 ms/op | |
WorkloadResult 16: 32 op, 917718800.00 ns, 28.6787 ms/op | |
WorkloadResult 17: 32 op, 861345700.00 ns, 26.9171 ms/op | |
WorkloadResult 18: 32 op, 929823600.00 ns, 29.0570 ms/op | |
WorkloadResult 19: 32 op, 898899000.00 ns, 28.0906 ms/op | |
WorkloadResult 20: 32 op, 905622000.00 ns, 28.3007 ms/op | |
WorkloadResult 21: 32 op, 899545900.00 ns, 28.1108 ms/op | |
WorkloadResult 22: 32 op, 863100400.00 ns, 26.9719 ms/op | |
WorkloadResult 23: 32 op, 914004700.00 ns, 28.5626 ms/op | |
GC: 0 0 0 480 32 | |
Threading: 0 0 32 | |
// AfterAll | |
// Benchmark Process 2628 has exited with code 0. | |
Mean = 28.052 ms, StdErr = 0.147 ms (0.52%), N = 23, StdDev = 0.705 ms | |
Min = 26.917 ms, Q1 = 27.648 ms, Median = 28.021 ms, Q3 = 28.456 ms, Max = 29.670 ms | |
IQR = 0.808 ms, LowerFence = 26.437 ms, UpperFence = 29.667 ms | |
ConfidenceInterval = [27.494 ms; 28.610 ms] (CI 99.9%), Margin = 0.558 ms (1.99% of Mean) | |
Skewness = 0.47, Kurtosis = 2.62, MValue = 2 | |
// ***** BenchmarkRunner: Finish ***** | |
// * Export * | |
BenchmarkDotNet.Artifacts\results\Program.benchmarker-report.csv | |
BenchmarkDotNet.Artifacts\results\Program.benchmarker-report-github.md | |
BenchmarkDotNet.Artifacts\results\Program.benchmarker-report.html | |
// * Detailed results * | |
benchmarker.old: DefaultJob | |
Runtime = .NET 6.0.9 (6.0.922.41905), X64 RyuJIT; GC = Concurrent Workstation | |
Mean = 312.008 ms, StdErr = 1.694 ms (0.54%), N = 36, StdDev = 10.165 ms | |
Min = 300.010 ms, Q1 = 304.040 ms, Median = 307.925 ms, Q3 = 319.376 ms, Max = 337.494 ms | |
IQR = 15.336 ms, LowerFence = 281.036 ms, UpperFence = 342.381 ms | |
ConfidenceInterval = [305.925 ms; 318.092 ms] (CI 99.9%), Margin = 6.084 ms (1.95% of Mean) | |
Skewness = 0.85, Kurtosis = 2.57, MValue = 2 | |
-------------------- Histogram -------------------- | |
[295.970 ms ; 308.823 ms) | @@@@@@@@@@@@@@@@@@@ | |
[308.823 ms ; 320.327 ms) | @@@@@@@@@@ | |
[320.327 ms ; 333.660 ms) | @@@@@@ | |
[333.660 ms ; 341.535 ms) | @ | |
--------------------------------------------------- | |
benchmarker.oldAnd: DefaultJob | |
Runtime = .NET 6.0.9 (6.0.922.41905), X64 RyuJIT; GC = Concurrent Workstation | |
Mean = 440.199 ms, StdErr = 2.370 ms (0.54%), N = 29, StdDev = 12.763 ms | |
Min = 423.253 ms, Q1 = 432.577 ms, Median = 437.553 ms, Q3 = 448.124 ms, Max = 471.506 ms | |
IQR = 15.547 ms, LowerFence = 409.257 ms, UpperFence = 471.445 ms | |
ConfidenceInterval = [431.491 ms; 448.906 ms] (CI 99.9%), Margin = 8.707 ms (1.98% of Mean) | |
Skewness = 0.79, Kurtosis = 2.9, MValue = 2 | |
-------------------- Histogram -------------------- | |
[420.437 ms ; 432.113 ms) | @@@@@@@ | |
[432.113 ms ; 443.018 ms) | @@@@@@@@@@@@ | |
[443.018 ms ; 456.766 ms) | @@@@@@@@ | |
[456.766 ms ; 476.958 ms) | @@ | |
--------------------------------------------------- | |
benchmarker.oldAnd5: DefaultJob | |
Runtime = .NET 6.0.9 (6.0.922.41905), X64 RyuJIT; GC = Concurrent Workstation | |
Mean = 99.637 ms, StdErr = 0.422 ms (0.42%), N = 16, StdDev = 1.688 ms | |
Min = 97.188 ms, Q1 = 98.169 ms, Median = 99.582 ms, Q3 = 100.134 ms, Max = 102.622 ms | |
IQR = 1.964 ms, LowerFence = 95.223 ms, UpperFence = 103.080 ms | |
ConfidenceInterval = [97.919 ms; 101.356 ms] (CI 99.9%), Margin = 1.719 ms (1.73% of Mean) | |
Skewness = 0.36, Kurtosis = 2.04, MValue = 2 | |
-------------------- Histogram -------------------- | |
[96.725 ms ; 98.717 ms) | @@@@@ | |
[98.717 ms ; 103.311 ms) | @@@@@@@@@@@ | |
--------------------------------------------------- | |
benchmarker.efficient: DefaultJob | |
Runtime = .NET 6.0.9 (6.0.922.41905), X64 RyuJIT; GC = Concurrent Workstation | |
Mean = 15.666 ms, StdErr = 0.047 ms (0.30%), N = 13, StdDev = 0.170 ms | |
Min = 15.397 ms, Q1 = 15.494 ms, Median = 15.702 ms, Q3 = 15.822 ms, Max = 15.881 ms | |
IQR = 0.328 ms, LowerFence = 15.003 ms, UpperFence = 16.313 ms | |
ConfidenceInterval = [15.463 ms; 15.869 ms] (CI 99.9%), Margin = 0.203 ms (1.30% of Mean) | |
Skewness = -0.36, Kurtosis = 1.49, MValue = 2 | |
-------------------- Histogram -------------------- | |
[15.302 ms ; 15.920 ms) | @@@@@@@@@@@@@ | |
--------------------------------------------------- | |
benchmarker.efficient2: DefaultJob | |
Runtime = .NET 6.0.9 (6.0.922.41905), X64 RyuJIT; GC = Concurrent Workstation | |
Mean = 14.199 ms, StdErr = 0.039 ms (0.28%), N = 14, StdDev = 0.146 ms | |
Min = 13.830 ms, Q1 = 14.131 ms, Median = 14.223 ms, Q3 = 14.276 ms, Max = 14.441 ms | |
IQR = 0.145 ms, LowerFence = 13.914 ms, UpperFence = 14.493 ms | |
ConfidenceInterval = [14.035 ms; 14.364 ms] (CI 99.9%), Margin = 0.165 ms (1.16% of Mean) | |
Skewness = -0.8, Kurtosis = 3.65, MValue = 2 | |
-------------------- Histogram -------------------- | |
[13.750 ms ; 14.088 ms) | @@ | |
[14.088 ms ; 14.521 ms) | @@@@@@@@@@@@ | |
--------------------------------------------------- | |
benchmarker.efficientAnd: DefaultJob | |
Runtime = .NET 6.0.9 (6.0.922.41905), X64 RyuJIT; GC = Concurrent Workstation | |
Mean = 409.580 ms, StdErr = 0.967 ms (0.24%), N = 15, StdDev = 3.744 ms | |
Min = 405.555 ms, Q1 = 406.290 ms, Median = 408.589 ms, Q3 = 411.883 ms, Max = 418.109 ms | |
IQR = 5.593 ms, LowerFence = 397.901 ms, UpperFence = 420.273 ms | |
ConfidenceInterval = [405.577 ms; 413.582 ms] (CI 99.9%), Margin = 4.002 ms (0.98% of Mean) | |
Skewness = 0.65, Kurtosis = 2.34, MValue = 2 | |
-------------------- Histogram -------------------- | |
[403.563 ms ; 420.102 ms) | @@@@@@@@@@@@@@@ | |
--------------------------------------------------- | |
benchmarker.efficientAnd5: DefaultJob | |
Runtime = .NET 6.0.9 (6.0.922.41905), X64 RyuJIT; GC = Concurrent Workstation | |
Mean = 28.052 ms, StdErr = 0.147 ms (0.52%), N = 23, StdDev = 0.705 ms | |
Min = 26.917 ms, Q1 = 27.648 ms, Median = 28.021 ms, Q3 = 28.456 ms, Max = 29.670 ms | |
IQR = 0.808 ms, LowerFence = 26.437 ms, UpperFence = 29.667 ms | |
ConfidenceInterval = [27.494 ms; 28.610 ms] (CI 99.9%), Margin = 0.558 ms (1.99% of Mean) | |
Skewness = 0.47, Kurtosis = 2.62, MValue = 2 | |
-------------------- Histogram -------------------- | |
[26.694 ms ; 27.460 ms) | @@@ | |
[27.460 ms ; 28.111 ms) | @@@@@@@@@@@@ | |
[28.111 ms ; 28.815 ms) | @@@@@ | |
[28.815 ms ; 29.689 ms) | @@@ | |
--------------------------------------------------- | |
// * Summary * | |
BenchmarkDotNet=v0.13.1, OS=Windows 10.0.22000 | |
AMD Ryzen 7 PRO 5850U with Radeon Graphics, 1 CPU, 16 logical and 8 physical cores | |
.NET SDK=6.0.401 | |
[Host] : .NET 6.0.9 (6.0.922.41905), X64 RyuJIT DEBUG | |
DefaultJob : .NET 6.0.9 (6.0.922.41905), X64 RyuJIT | |
| Method | Mean | Error | StdDev | Gen 0 | Allocated | | |
|-------------- |----------:|---------:|----------:|------------:|--------------:| | |
| old | 312.01 ms | 6.084 ms | 10.165 ms | 112000.0000 | 940,000,592 B | | |
| oldAnd | 440.20 ms | 8.707 ms | 12.763 ms | 28000.0000 | 240,000,504 B | | |
| oldAnd5 | 99.64 ms | 1.719 ms | 1.688 ms | - | 111 B | | |
| efficient | 15.67 ms | 0.203 ms | 0.170 ms | - | 8 B | | |
| efficient2 | 14.20 ms | 0.165 ms | 0.146 ms | - | 8 B | | |
| efficientAnd | 409.58 ms | 4.002 ms | 3.744 ms | - | 480 B | | |
| efficientAnd5 | 28.05 ms | 0.558 ms | 0.705 ms | - | 15 B | | |
// * Hints * | |
Outliers | |
benchmarker.old: Default -> 1 outlier was removed (365.19 ms) | |
benchmarker.oldAnd: Default -> 1 outlier was removed (476.47 ms) | |
benchmarker.oldAnd5: Default -> 1 outlier was removed (104.89 ms) | |
benchmarker.efficient: Default -> 2 outliers were removed (16.27 ms, 16.41 ms) | |
benchmarker.efficient2: Default -> 1 outlier was removed, 2 outliers were detected (13.83 ms, 14.54 ms) | |
benchmarker.efficientAnd5: Default -> 2 outliers were removed (30.20 ms, 31.26 ms) | |
// * Legends * | |
Mean : Arithmetic mean of all measurements | |
Error : Half of 99.9% confidence interval | |
StdDev : Standard deviation of all measurements | |
Gen 0 : GC Generation 0 collects per 1000 operations | |
Allocated : Allocated memory per single operation (managed only, inclusive, 1KB = 1024B) | |
1 ms : 1 Millisecond (0.001 sec) | |
// * Diagnostic Output - MemoryDiagnoser * | |
// ***** BenchmarkRunner: End ***** | |
// ** Remained 0 benchmark(s) to run ** | |
Run time: 00:02:23 (143.66 sec), executed benchmarks: 7 | |
Global total time: 00:02:28 (148.14 sec), executed benchmarks: 7 | |
// * Artifacts cleanup * |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment