Bones of Day 13, and 6% speedup to day 12 (#21)

This commit is contained in:
Patrick Stevens
2022-12-12 17:40:39 +00:00
committed by GitHub
parent cf1e3c9660
commit e6ede84ea4
14 changed files with 321 additions and 116 deletions

View File

@@ -22,6 +22,7 @@
<EmbeddedResource Include="..\AdventOfCode2022.Test\Inputs\Day10.txt" />
<EmbeddedResource Include="..\AdventOfCode2022.Test\Inputs\Day11.txt" />
<EmbeddedResource Include="..\AdventOfCode2022.Test\Inputs\Day12.txt" />
<EmbeddedResource Include="..\AdventOfCode2022.Test\Inputs\Day13.txt" />
</ItemGroup>
<ItemGroup>

View File

@@ -2,5 +2,5 @@ namespace AdventOfCode2022.App
[<RequireQualifiedAccess>]
module Inputs =
let days = Array.init 12 (fun day -> Assembly.readResource $"Day%i{day + 1}.txt")
let days = Array.init 13 (fun day -> Assembly.readResource $"Day%i{day + 1}.txt")
let inline day (i : int) = days.[i - 1]

View File

@@ -12,7 +12,7 @@ type Benchmarks () =
[<GlobalSetup>]
member _.Setup () = Run.shouldWrite <- false
[<Params(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)>]
[<Params(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13)>]
member val Day = 0 with get, set
[<Params(false, true)>]
@@ -36,7 +36,7 @@ module Program =
.Create(DefaultConfig.Instance)
.WithOptions ConfigOptions.DisableOptimizationsValidator
let summary = BenchmarkRunner.Run<Benchmarks> config
let _summary = BenchmarkRunner.Run<Benchmarks> config
0
| _ ->

View File

@@ -173,6 +173,21 @@ module Run =
if shouldWrite then
printfn "%i" output
let day13 (partTwo : bool) (input : string) =
let day13 = StringSplitEnumerator.make '\n' input
if not partTwo then
let output = Day13.part1 day13
if shouldWrite then
printfn "%i" output
else
let output = Day13.part2 day13
if shouldWrite then
printfn "%i" output
let allRuns =
[|
day1
@@ -187,4 +202,5 @@ module Run =
day10
day11
day12
day13
|]

View File

@@ -20,6 +20,7 @@
<Compile Include="Day10.fs" />
<Compile Include="Day11.fs" />
<Compile Include="Day12.fs" />
<None Include="Day13.fs" />
<EmbeddedResource Include="Inputs\Day1.txt" />
<EmbeddedResource Include="Inputs\Day2.txt" />
<EmbeddedResource Include="Inputs\Day3.txt" />
@@ -32,6 +33,7 @@
<EmbeddedResource Include="Inputs\Day10.txt" />
<EmbeddedResource Include="Inputs\Day11.txt" />
<EmbeddedResource Include="Inputs\Day12.txt" />
<EmbeddedResource Include="Inputs\Day13.txt" />
</ItemGroup>
<ItemGroup>

View File

@@ -0,0 +1,32 @@
namespace AdventOfCode2022.Test
open NUnit.Framework
open FsUnitTyped
open AdventOfCode2022
[<TestFixture>]
module TestDay13 =
let input =
"""
"""
[<Test>]
let ``Part 1, given`` () =
Day13.part1 (StringSplitEnumerator.make '\n' input) |> shouldEqual 31
[<Test>]
let ``Part 1`` () =
let input = Assembly.readResource "Day13.txt"
Day13.part1 (StringSplitEnumerator.make '\n' input) |> shouldEqual 456
[<Test>]
let ``Part 2, given`` () =
Day13.part2 (StringSplitEnumerator.make '\n' input) |> shouldEqual 29
[<Test>]
let ``Part 2`` () =
let input = Assembly.readResource "Day13.txt"
Day13.part2 (StringSplitEnumerator.make '\n' input) |> shouldEqual 454

View File

View File

@@ -22,6 +22,7 @@
<Compile Include="Day10.fs" />
<Compile Include="Day11.fs" />
<Compile Include="Day12.fs" />
<Compile Include="Day13.fs" />
</ItemGroup>
</Project>

View File

@@ -1,39 +1,92 @@
namespace AdventOfCode2022
#if DEBUG
#else
#nowarn "9"
#endif
open Microsoft.FSharp.NativeInterop
[<Struct>]
#if DEBUG
type Arr2D<'a> =
{
Elements : 'a[]
Elements : 'a array
Width : int
Height : int
}
member this.Height = this.Elements.Length / this.Width
#else
type Arr2D<'a when 'a : unmanaged> =
{
Elements : nativeptr<'a>
Length : int
Width : int
}
member this.Height = this.Length / this.Width
#endif
[<RequireQualifiedAccess>]
module Arr2D =
/// It's faster to iterate forward over the first argument, `x`.
let inline get (arr : Arr2D<'a>) (x : int) (y : int) : 'a = arr.Elements.[y * arr.Width + x]
let inline get (arr : Arr2D<'a>) (x : int) (y : int) : 'a =
#if DEBUG
arr.Elements.[y * arr.Width + x]
#else
NativePtr.get arr.Elements (y * arr.Width + x)
#endif
let inline set (arr : Arr2D<'a>) (x : int) (y : int) (newVal : 'a) : unit =
#if DEBUG
arr.Elements.[y * arr.Width + x] <- newVal
#else
NativePtr.write (NativePtr.add arr.Elements (y * arr.Width + x)) newVal
#endif
#if DEBUG
let create (width : int) (height : int) (value : 'a) : Arr2D<'a> =
let arr = Array.create (width * height) value
let create<'a> (width : int) (height : int) (value : 'a) : Arr2D<'a> =
{
Elements = Array.create (width * height) value
Width = width
Height = height
Elements = arr
}
#else
/// The input array must be at least of size width * height
let create (arr : nativeptr<'a>) (width : int) (height : int) (value : 'a) : Arr2D<'a> =
{
Width = width
Elements = arr
Length = width * height
}
#endif
[<RequiresExplicitTypeArguments>]
let zeroCreate<'a> (width : int) (height : int) : Arr2D<'a> =
#if DEBUG
let zeroCreate<'a when 'a : unmanaged> (width : int) (height : int) : Arr2D<'a> =
{
Elements = Array.zeroCreate (width * height)
Width = width
Height = height
}
#else
let zeroCreate<'a when 'a : unmanaged> (elts : nativeptr<'a>) (width : int) (height : int) : Arr2D<'a> =
{
Elements = elts
Width = width
Length = width * height
}
#endif
/// The closure is given x and then y.
let inline init<'a> (width : int) (height : int) (f : int -> int -> 'a) : Arr2D<'a> =
#if DEBUG
let inline init (width : int) (height : int) (f : int -> int -> 'a) : Arr2D<'a> =
let result = zeroCreate<'a> width height
#else
let inline init (arr : nativeptr<'a>) (width : int) (height : int) (f : int -> int -> 'a) : Arr2D<'a> =
let result = zeroCreate<'a> arr width height
#endif
for y in 0 .. height - 1 do
for x in 0 .. width - 1 do
@@ -41,6 +94,9 @@ module Arr2D =
result
let inline clear (a : Arr2D<'a>) : unit = System.Array.Clear a.Elements
let inline setAll (a : Arr2D<'a>) (v : 'a) : unit = System.Array.Fill (a.Elements, v)
let inline clear (a : Arr2D<'a>) : unit =
#if DEBUG
System.Array.Clear a.Elements
#else
NativePtr.initBlock a.Elements 0uy (uint32 sizeof<'a> * uint32 a.Length)
#endif

View File

@@ -6,6 +6,11 @@ open System
open Checked
#endif
#if DEBUG
#else
#nowarn "9"
#endif
[<RequireQualifiedAccess>]
module Day12 =
@@ -18,7 +23,7 @@ module Day12 =
Y : int
}
let parse (lines : StringSplitEnumerator) : Arr2D<byte> * Coordinate * Coordinate =
let parse (lines : StringSplitEnumerator) : array<byte> * int * Coordinate * Coordinate =
use mutable enum = lines
let output = ResizeArray ()
let mutable startPos = Unchecked.defaultof<Coordinate>
@@ -53,8 +58,13 @@ module Day12 =
arr |> output.Add
row <- row + 1
let output = Arr2D.init output.[0].Length output.Count (fun x y -> output.[y].[x])
output, startPos, endPos
let arr = Array.zeroCreate<byte> (output.Count * output.[0].Length)
for x in 0 .. output.[0].Length - 1 do
for y in 0 .. output.Count - 1 do
arr.[y * output.[0].Length + x] <- output.[y].[x]
arr, output.[0].Length, startPos, endPos
let inline isEdge (nodes : Arr2D< ^a >) sourceX sourceY destX destY =
Arr2D.get nodes sourceX sourceY
@@ -78,8 +88,9 @@ module Day12 =
let mutable currentDistance = 0
Arr2D.clear isVisited
Arr2D.setAll distances Int32.MaxValue
Arr2D.set distances start.X start.Y 0
// A distance of 0 is interpreted as infinite.
Arr2D.clear distances
let mutable stillGoing = true
while stillGoing && currentDistance < Int32.MaxValue do
@@ -90,7 +101,9 @@ module Day12 =
then
let newDistance = 1 + currentDistance
if newDistance < Arr2D.get distances (currentX + 1) currentY then
let distanceGuess = Arr2D.get distances (currentX + 1) currentY
if distanceGuess = 0 || newDistance < distanceGuess then
Arr2D.set distances (currentX + 1) currentY newDistance
if currentX > 0 then
@@ -100,7 +113,9 @@ module Day12 =
then
let newDistance = 1 + currentDistance
if newDistance < Arr2D.get distances (currentX - 1) currentY then
let distanceGuess = Arr2D.get distances (currentX - 1) currentY
if distanceGuess = 0 || newDistance < distanceGuess then
Arr2D.set distances (currentX - 1) currentY newDistance
if currentY > 0 then
@@ -110,7 +125,9 @@ module Day12 =
then
let newDistance = 1 + currentDistance
if newDistance < Arr2D.get distances currentX (currentY - 1) then
let distanceGuess = Arr2D.get distances currentX (currentY - 1)
if distanceGuess = 0 || newDistance < distanceGuess then
Arr2D.set distances currentX (currentY - 1) newDistance
if currentY < distances.Height - 1 then
@@ -120,7 +137,9 @@ module Day12 =
then
let newDistance = 1 + currentDistance
if newDistance < Arr2D.get distances currentX (currentY + 1) then
let distanceGuess = Arr2D.get distances currentX (currentY + 1)
if distanceGuess = 0 || newDistance < distanceGuess then
Arr2D.set distances currentX (currentY + 1) newDistance
Arr2D.set isVisited currentX currentY true
@@ -132,40 +151,91 @@ module Day12 =
for nextX in 0 .. isVisited.Width - 1 do
for nextY in 0 .. isVisited.Height - 1 do
if
not (Arr2D.get isVisited nextX nextY)
&& Arr2D.get distances nextX nextY <= smallestDistance
then
if not (Arr2D.get isVisited nextX nextY) then
let distance = Arr2D.get distances nextX nextY
if distance > 0 && distance <= smallestDistance then
currentX <- nextX
currentY <- nextY
smallestDistance <- Arr2D.get distances nextX nextY
smallestDistance <- distance
currentDistance <- smallestDistance
let output = ResizeArray ()
match dest with
| Some dest -> Arr2D.get distances dest.X dest.Y
| None ->
let mutable minValue = Int32.MaxValue
for y in 0 .. nodes.Height - 1 do
for x in 0 .. nodes.Width - 1 do
if Arr2D.get nodes x y = 0uy then
minValue <- min minValue (Arr2D.get distances x y)
let distance = Arr2D.get distances x y
if distance <> 0 then
minValue <- min minValue distance
minValue
let part1 (lines : StringSplitEnumerator) : int =
let data, start, endPoint = parse lines
let data, width, start, endPoint = parse lines
#if DEBUG
let data =
{
Width = width
Elements = data
}
let distances = Arr2D.create data.Width data.Height Int32.MaxValue
let isVisited = Arr2D.zeroCreate<bool> data.Width data.Height
#else
use ptr = fixed data
let data =
{
Width = width
Elements = ptr
Length = data.Length
}
let distanceArr = Array.zeroCreate (data.Width * data.Height)
use ptr = fixed distanceArr
let distances = Arr2D.zeroCreate<int> ptr data.Width data.Height
let visitedArr = Array.zeroCreate (data.Width * data.Height)
use ptr = fixed visitedArr
let isVisited = Arr2D.zeroCreate<bool> ptr data.Width data.Height
#endif
dijkstra distances isVisited data endPoint (Some start)
let part2 (lines : StringSplitEnumerator) : int =
let data, _, endPoint = parse lines
let data, width, _, endPoint = parse lines
#if DEBUG
let data =
{
Width = width
Elements = data
}
let distances = Arr2D.zeroCreate<int32> data.Width data.Height
let isVisited = Arr2D.zeroCreate<bool> data.Width data.Height
#else
use ptr = fixed data
let data =
{
Width = width
Elements = ptr
Length = data.Length
}
let distanceArr = Array.zeroCreate (data.Width * data.Height)
use ptr = fixed distanceArr
let distances = Arr2D.zeroCreate<int32> ptr data.Width data.Height
let visitedArr = Array.zeroCreate (data.Width * data.Height)
use ptr = fixed visitedArr
let isVisited = Arr2D.zeroCreate<bool> ptr data.Width data.Height
#endif
dijkstra distances isVisited data endPoint None

27
AdventOfCode2022/Day13.fs Normal file
View File

@@ -0,0 +1,27 @@
namespace AdventOfCode2022
open System
#if DEBUG
open Checked
#endif
[<RequireQualifiedAccess>]
module Day13 =
let parse (lines : StringSplitEnumerator) : int =
use mutable enum = lines
let output = ResizeArray ()
while enum.MoveNext () do
output.Add ()
0
let part1 (lines : StringSplitEnumerator) : int =
let data = parse lines
-1
let part2 (lines : StringSplitEnumerator) : int =
let data = parse lines
-1

View File

@@ -9,28 +9,28 @@ Apple M1 Max, 1 CPU, 10 logical and 10 physical cores
```
| Method | Day | IsPartOne | Mean | Error | StdDev |
|---------- |---- |---------- |--------------:|------------:|------------:|
| **Benchmark** | **1** | **False** | **32.141 μs** | **0.2322 μs** | **0.2058 μs** |
| **Benchmark** | **1** | **True** | **32.234 μs** | **0.1053 μs** | **0.0879 μs** |
| **Benchmark** | **2** | **False** | **81.493 μs** | **0.4374 μs** | **0.3878 μs** |
| **Benchmark** | **2** | **True** | **80.254 μs** | **0.3678 μs** | **0.3441 μs** |
| **Benchmark** | **3** | **False** | **32.799 μs** | **0.6158 μs** | **0.6845 μs** |
| **Benchmark** | **3** | **True** | **67.518 μs** | **0.4719 μs** | **0.4415 μs** |
| **Benchmark** | **4** | **False** | **67.787 μs** | **0.7091 μs** | **0.6633 μs** |
| **Benchmark** | **4** | **True** | **54.713 μs** | **0.4908 μs** | **0.4098 μs** |
| **Benchmark** | **5** | **False** | **92.630 μs** | **0.6449 μs** | **0.6032 μs** |
| **Benchmark** | **5** | **True** | **80.029 μs** | **0.7128 μs** | **0.6667 μs** |
| **Benchmark** | **6** | **False** | **87.383 μs** | **1.5401 μs** | **1.3653 μs** |
| **Benchmark** | **6** | **True** | **168.588 μs** | **1.6324 μs** | **1.5269 μs** |
| **Benchmark** | **7** | **False** | **455.791 μs** | **4.1958 μs** | **3.7195 μs** |
| **Benchmark** | **7** | **True** | **470.090 μs** | **8.8935 μs** | **9.8851 μs** |
| **Benchmark** | **8** | **False** | **770.817 μs** | **9.3998 μs** | **8.7926 μs** |
| **Benchmark** | **8** | **True** | **371.655 μs** | **5.7277 μs** | **4.7829 μs** |
| **Benchmark** | **9** | **False** | **507.394 μs** | **8.8597 μs** | **9.0983 μs** |
| **Benchmark** | **9** | **True** | **933.275 μs** | **6.8702 μs** | **5.7369 μs** |
| **Benchmark** | **10** | **False** | **7.589 μs** | **0.1097 μs** | **0.1026 μs** |
| **Benchmark** | **10** | **True** | **8.606 μs** | **0.0672 μs** | **0.0629 μs** |
| **Benchmark** | **11** | **False** | **7.400 μs** | **0.0986 μs** | **0.0923 μs** |
| **Benchmark** | **11** | **True** | **2,908.736 μs** | **25.5263 μs** | **21.3156 μs** |
| **Benchmark** | **12** | **False** | **21,693.302 μs** | **166.2399 μs** | **155.5009 μs** |
| **Benchmark** | **12** | **True** | **23,433.128 μs** | **51.6383 μs** | **43.1203 μs** |
|---------- |---- |---------- |--------------:|-----------:|-----------:|
| **Benchmark** | **1** | **False** | **33.244 μs** | **0.2642 μs** | **0.2471 μs** |
| **Benchmark** | **1** | **True** | **32.513 μs** | **0.1846 μs** | **0.1726 μs** |
| **Benchmark** | **2** | **False** | **81.554 μs** | **0.2173 μs** | **0.1815 μs** |
| **Benchmark** | **2** | **True** | **79.599 μs** | **0.1147 μs** | **0.1073 μs** |
| **Benchmark** | **3** | **False** | **31.007 μs** | **0.5214 μs** | **0.4877 μs** |
| **Benchmark** | **3** | **True** | **68.288 μs** | **0.7579 μs** | **0.7089 μs** |
| **Benchmark** | **4** | **False** | **67.351 μs** | **0.3972 μs** | **0.3521 μs** |
| **Benchmark** | **4** | **True** | **55.999 μs** | **0.1689 μs** | **0.1580 μs** |
| **Benchmark** | **5** | **False** | **92.782 μs** | **1.0320 μs** | **0.9654 μs** |
| **Benchmark** | **5** | **True** | **79.805 μs** | **0.6187 μs** | **0.5167 μs** |
| **Benchmark** | **6** | **False** | **84.490 μs** | **0.2784 μs** | **0.2468 μs** |
| **Benchmark** | **6** | **True** | **166.730 μs** | **0.5719 μs** | **0.5350 μs** |
| **Benchmark** | **7** | **False** | **453.619 μs** | **2.1378 μs** | **1.9997 μs** |
| **Benchmark** | **7** | **True** | **452.451 μs** | **1.4309 μs** | **1.3385 μs** |
| **Benchmark** | **8** | **False** | **755.448 μs** | **0.7892 μs** | **0.7382 μs** |
| **Benchmark** | **8** | **True** | **375.527 μs** | **3.0205 μs** | **2.5223 μs** |
| **Benchmark** | **9** | **False** | **501.875 μs** | **2.1927 μs** | **1.9438 μs** |
| **Benchmark** | **9** | **True** | **933.000 μs** | **9.1963 μs** | **8.6022 μs** |
| **Benchmark** | **10** | **False** | **7.636 μs** | **0.0413 μs** | **0.0386 μs** |
| **Benchmark** | **10** | **True** | **8.521 μs** | **0.0276 μs** | **0.0258 μs** |
| **Benchmark** | **11** | **False** | **7.342 μs** | **0.0088 μs** | **0.0083 μs** |
| **Benchmark** | **11** | **True** | **2,892.387 μs** | **4.6952 μs** | **4.3919 μs** |
| **Benchmark** | **12** | **False** | **18,577.038 μs** | **65.5871 μs** | **51.2061 μs** |
| **Benchmark** | **12** | **True** | **20,108.906 μs** | **54.5080 μs** | **48.3199 μs** |

View File

@@ -1,25 +1,25 @@
Method,Job,AnalyzeLaunchVariance,EvaluateOverhead,MaxAbsoluteError,MaxRelativeError,MinInvokeCount,MinIterationTime,OutlierMode,Affinity,EnvironmentVariables,Jit,Platform,PowerPlanMode,Runtime,AllowVeryLargeObjects,Concurrent,CpuGroups,Force,HeapAffinitizeMask,HeapCount,NoAffinitize,RetainVm,Server,Arguments,BuildConfiguration,Clock,EngineFactory,NuGetReferences,Toolchain,IsMutator,InvocationCount,IterationCount,IterationTime,LaunchCount,MaxIterationCount,MaxWarmupIterationCount,MemoryRandomization,MinIterationCount,MinWarmupIterationCount,RunStrategy,UnrollFactor,WarmupCount,Day,IsPartOne,Mean,Error,StdDev
Benchmark,DefaultJob,False,Default,Default,Default,Default,Default,Default,0000000000,Empty,RyuJit,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 7.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,1,False,32.141 μs,0.2322 μs,0.2058 μs
Benchmark,DefaultJob,False,Default,Default,Default,Default,Default,Default,0000000000,Empty,RyuJit,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 7.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,1,True,32.234 μs,0.1053 μs,0.0879 μs
Benchmark,DefaultJob,False,Default,Default,Default,Default,Default,Default,0000000000,Empty,RyuJit,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 7.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,2,False,81.493 μs,0.4374 μs,0.3878 μs
Benchmark,DefaultJob,False,Default,Default,Default,Default,Default,Default,0000000000,Empty,RyuJit,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 7.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,2,True,80.254 μs,0.3678 μs,0.3441 μs
Benchmark,DefaultJob,False,Default,Default,Default,Default,Default,Default,0000000000,Empty,RyuJit,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 7.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,3,False,32.799 μs,0.6158 μs,0.6845 μs
Benchmark,DefaultJob,False,Default,Default,Default,Default,Default,Default,0000000000,Empty,RyuJit,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 7.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,3,True,67.518 μs,0.4719 μs,0.4415 μs
Benchmark,DefaultJob,False,Default,Default,Default,Default,Default,Default,0000000000,Empty,RyuJit,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 7.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,4,False,67.787 μs,0.7091 μs,0.6633 μs
Benchmark,DefaultJob,False,Default,Default,Default,Default,Default,Default,0000000000,Empty,RyuJit,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 7.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,4,True,54.713 μs,0.4908 μs,0.4098 μs
Benchmark,DefaultJob,False,Default,Default,Default,Default,Default,Default,0000000000,Empty,RyuJit,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 7.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,5,False,92.630 μs,0.6449 μs,0.6032 μs
Benchmark,DefaultJob,False,Default,Default,Default,Default,Default,Default,0000000000,Empty,RyuJit,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 7.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,5,True,80.029 μs,0.7128 μs,0.6667 μs
Benchmark,DefaultJob,False,Default,Default,Default,Default,Default,Default,0000000000,Empty,RyuJit,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 7.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,6,False,87.383 μs,1.5401 μs,1.3653 μs
Benchmark,DefaultJob,False,Default,Default,Default,Default,Default,Default,0000000000,Empty,RyuJit,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 7.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,6,True,168.588 μs,1.6324 μs,1.5269 μs
Benchmark,DefaultJob,False,Default,Default,Default,Default,Default,Default,0000000000,Empty,RyuJit,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 7.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,7,False,455.791 μs,4.1958 μs,3.7195 μs
Benchmark,DefaultJob,False,Default,Default,Default,Default,Default,Default,0000000000,Empty,RyuJit,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 7.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,7,True,470.090 μs,8.8935 μs,9.8851 μs
Benchmark,DefaultJob,False,Default,Default,Default,Default,Default,Default,0000000000,Empty,RyuJit,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 7.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,8,False,770.817 μs,9.3998 μs,8.7926 μs
Benchmark,DefaultJob,False,Default,Default,Default,Default,Default,Default,0000000000,Empty,RyuJit,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 7.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,8,True,371.655 μs,5.7277 μs,4.7829 μs
Benchmark,DefaultJob,False,Default,Default,Default,Default,Default,Default,0000000000,Empty,RyuJit,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 7.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,9,False,507.394 μs,8.8597 μs,9.0983 μs
Benchmark,DefaultJob,False,Default,Default,Default,Default,Default,Default,0000000000,Empty,RyuJit,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 7.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,9,True,933.275 μs,6.8702 μs,5.7369 μs
Benchmark,DefaultJob,False,Default,Default,Default,Default,Default,Default,0000000000,Empty,RyuJit,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 7.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,10,False,7.589 μs,0.1097 μs,0.1026 μs
Benchmark,DefaultJob,False,Default,Default,Default,Default,Default,Default,0000000000,Empty,RyuJit,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 7.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,10,True,8.606 μs,0.0672 μs,0.0629 μs
Benchmark,DefaultJob,False,Default,Default,Default,Default,Default,Default,0000000000,Empty,RyuJit,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 7.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,11,False,7.400 μs,0.0986 μs,0.0923 μs
Benchmark,DefaultJob,False,Default,Default,Default,Default,Default,Default,0000000000,Empty,RyuJit,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 7.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,11,True,"2,908.736 μs",25.5263 μs,21.3156 μs
Benchmark,DefaultJob,False,Default,Default,Default,Default,Default,Default,0000000000,Empty,RyuJit,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 7.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,12,False,"21,693.302 μs",166.2399 μs,155.5009 μs
Benchmark,DefaultJob,False,Default,Default,Default,Default,Default,Default,0000000000,Empty,RyuJit,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 7.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,12,True,"23,433.128 μs",51.6383 μs,43.1203 μs
Benchmark,DefaultJob,False,Default,Default,Default,Default,Default,Default,0000000000,Empty,RyuJit,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 7.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,1,False,33.244 μs,0.2642 μs,0.2471 μs
Benchmark,DefaultJob,False,Default,Default,Default,Default,Default,Default,0000000000,Empty,RyuJit,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 7.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,1,True,32.513 μs,0.1846 μs,0.1726 μs
Benchmark,DefaultJob,False,Default,Default,Default,Default,Default,Default,0000000000,Empty,RyuJit,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 7.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,2,False,81.554 μs,0.2173 μs,0.1815 μs
Benchmark,DefaultJob,False,Default,Default,Default,Default,Default,Default,0000000000,Empty,RyuJit,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 7.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,2,True,79.599 μs,0.1147 μs,0.1073 μs
Benchmark,DefaultJob,False,Default,Default,Default,Default,Default,Default,0000000000,Empty,RyuJit,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 7.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,3,False,31.007 μs,0.5214 μs,0.4877 μs
Benchmark,DefaultJob,False,Default,Default,Default,Default,Default,Default,0000000000,Empty,RyuJit,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 7.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,3,True,68.288 μs,0.7579 μs,0.7089 μs
Benchmark,DefaultJob,False,Default,Default,Default,Default,Default,Default,0000000000,Empty,RyuJit,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 7.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,4,False,67.351 μs,0.3972 μs,0.3521 μs
Benchmark,DefaultJob,False,Default,Default,Default,Default,Default,Default,0000000000,Empty,RyuJit,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 7.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,4,True,55.999 μs,0.1689 μs,0.1580 μs
Benchmark,DefaultJob,False,Default,Default,Default,Default,Default,Default,0000000000,Empty,RyuJit,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 7.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,5,False,92.782 μs,1.0320 μs,0.9654 μs
Benchmark,DefaultJob,False,Default,Default,Default,Default,Default,Default,0000000000,Empty,RyuJit,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 7.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,5,True,79.805 μs,0.6187 μs,0.5167 μs
Benchmark,DefaultJob,False,Default,Default,Default,Default,Default,Default,0000000000,Empty,RyuJit,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 7.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,6,False,84.490 μs,0.2784 μs,0.2468 μs
Benchmark,DefaultJob,False,Default,Default,Default,Default,Default,Default,0000000000,Empty,RyuJit,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 7.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,6,True,166.730 μs,0.5719 μs,0.5350 μs
Benchmark,DefaultJob,False,Default,Default,Default,Default,Default,Default,0000000000,Empty,RyuJit,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 7.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,7,False,453.619 μs,2.1378 μs,1.9997 μs
Benchmark,DefaultJob,False,Default,Default,Default,Default,Default,Default,0000000000,Empty,RyuJit,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 7.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,7,True,452.451 μs,1.4309 μs,1.3385 μs
Benchmark,DefaultJob,False,Default,Default,Default,Default,Default,Default,0000000000,Empty,RyuJit,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 7.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,8,False,755.448 μs,0.7892 μs,0.7382 μs
Benchmark,DefaultJob,False,Default,Default,Default,Default,Default,Default,0000000000,Empty,RyuJit,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 7.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,8,True,375.527 μs,3.0205 μs,2.5223 μs
Benchmark,DefaultJob,False,Default,Default,Default,Default,Default,Default,0000000000,Empty,RyuJit,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 7.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,9,False,501.875 μs,2.1927 μs,1.9438 μs
Benchmark,DefaultJob,False,Default,Default,Default,Default,Default,Default,0000000000,Empty,RyuJit,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 7.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,9,True,933.000 μs,9.1963 μs,8.6022 μs
Benchmark,DefaultJob,False,Default,Default,Default,Default,Default,Default,0000000000,Empty,RyuJit,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 7.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,10,False,7.636 μs,0.0413 μs,0.0386 μs
Benchmark,DefaultJob,False,Default,Default,Default,Default,Default,Default,0000000000,Empty,RyuJit,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 7.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,10,True,8.521 μs,0.0276 μs,0.0258 μs
Benchmark,DefaultJob,False,Default,Default,Default,Default,Default,Default,0000000000,Empty,RyuJit,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 7.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,11,False,7.342 μs,0.0088 μs,0.0083 μs
Benchmark,DefaultJob,False,Default,Default,Default,Default,Default,Default,0000000000,Empty,RyuJit,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 7.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,11,True,"2,892.387 μs",4.6952 μs,4.3919 μs
Benchmark,DefaultJob,False,Default,Default,Default,Default,Default,Default,0000000000,Empty,RyuJit,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 7.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,12,False,"18,577.038 μs",65.5871 μs,51.2061 μs
Benchmark,DefaultJob,False,Default,Default,Default,Default,Default,Default,0000000000,Empty,RyuJit,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 7.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,12,True,"20,108.906 μs",54.5080 μs,48.3199 μs
1 Method Job AnalyzeLaunchVariance EvaluateOverhead MaxAbsoluteError MaxRelativeError MinInvokeCount MinIterationTime OutlierMode Affinity EnvironmentVariables Jit Platform PowerPlanMode Runtime AllowVeryLargeObjects Concurrent CpuGroups Force HeapAffinitizeMask HeapCount NoAffinitize RetainVm Server Arguments BuildConfiguration Clock EngineFactory NuGetReferences Toolchain IsMutator InvocationCount IterationCount IterationTime LaunchCount MaxIterationCount MaxWarmupIterationCount MemoryRandomization MinIterationCount MinWarmupIterationCount RunStrategy UnrollFactor WarmupCount Day IsPartOne Mean Error StdDev
2 Benchmark DefaultJob False Default Default Default Default Default Default 0000000000 Empty RyuJit Arm64 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c .NET 7.0 False True False True Default Default False False False Default Default Default Default Default Default Default Default Default Default Default Default Default Default Default Default Default 16 Default 1 False 32.141 μs 33.244 μs 0.2322 μs 0.2642 μs 0.2058 μs 0.2471 μs
3 Benchmark DefaultJob False Default Default Default Default Default Default 0000000000 Empty RyuJit Arm64 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c .NET 7.0 False True False True Default Default False False False Default Default Default Default Default Default Default Default Default Default Default Default Default Default Default Default Default 16 Default 1 True 32.234 μs 32.513 μs 0.1053 μs 0.1846 μs 0.0879 μs 0.1726 μs
4 Benchmark DefaultJob False Default Default Default Default Default Default 0000000000 Empty RyuJit Arm64 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c .NET 7.0 False True False True Default Default False False False Default Default Default Default Default Default Default Default Default Default Default Default Default Default Default Default Default 16 Default 2 False 81.493 μs 81.554 μs 0.4374 μs 0.2173 μs 0.3878 μs 0.1815 μs
5 Benchmark DefaultJob False Default Default Default Default Default Default 0000000000 Empty RyuJit Arm64 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c .NET 7.0 False True False True Default Default False False False Default Default Default Default Default Default Default Default Default Default Default Default Default Default Default Default Default 16 Default 2 True 80.254 μs 79.599 μs 0.3678 μs 0.1147 μs 0.3441 μs 0.1073 μs
6 Benchmark DefaultJob False Default Default Default Default Default Default 0000000000 Empty RyuJit Arm64 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c .NET 7.0 False True False True Default Default False False False Default Default Default Default Default Default Default Default Default Default Default Default Default Default Default Default Default 16 Default 3 False 32.799 μs 31.007 μs 0.6158 μs 0.5214 μs 0.6845 μs 0.4877 μs
7 Benchmark DefaultJob False Default Default Default Default Default Default 0000000000 Empty RyuJit Arm64 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c .NET 7.0 False True False True Default Default False False False Default Default Default Default Default Default Default Default Default Default Default Default Default Default Default Default Default 16 Default 3 True 67.518 μs 68.288 μs 0.4719 μs 0.7579 μs 0.4415 μs 0.7089 μs
8 Benchmark DefaultJob False Default Default Default Default Default Default 0000000000 Empty RyuJit Arm64 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c .NET 7.0 False True False True Default Default False False False Default Default Default Default Default Default Default Default Default Default Default Default Default Default Default Default Default 16 Default 4 False 67.787 μs 67.351 μs 0.7091 μs 0.3972 μs 0.6633 μs 0.3521 μs
9 Benchmark DefaultJob False Default Default Default Default Default Default 0000000000 Empty RyuJit Arm64 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c .NET 7.0 False True False True Default Default False False False Default Default Default Default Default Default Default Default Default Default Default Default Default Default Default Default Default 16 Default 4 True 54.713 μs 55.999 μs 0.4908 μs 0.1689 μs 0.4098 μs 0.1580 μs
10 Benchmark DefaultJob False Default Default Default Default Default Default 0000000000 Empty RyuJit Arm64 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c .NET 7.0 False True False True Default Default False False False Default Default Default Default Default Default Default Default Default Default Default Default Default Default Default Default Default 16 Default 5 False 92.630 μs 92.782 μs 0.6449 μs 1.0320 μs 0.6032 μs 0.9654 μs
11 Benchmark DefaultJob False Default Default Default Default Default Default 0000000000 Empty RyuJit Arm64 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c .NET 7.0 False True False True Default Default False False False Default Default Default Default Default Default Default Default Default Default Default Default Default Default Default Default Default 16 Default 5 True 80.029 μs 79.805 μs 0.7128 μs 0.6187 μs 0.6667 μs 0.5167 μs
12 Benchmark DefaultJob False Default Default Default Default Default Default 0000000000 Empty RyuJit Arm64 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c .NET 7.0 False True False True Default Default False False False Default Default Default Default Default Default Default Default Default Default Default Default Default Default Default Default Default 16 Default 6 False 87.383 μs 84.490 μs 1.5401 μs 0.2784 μs 1.3653 μs 0.2468 μs
13 Benchmark DefaultJob False Default Default Default Default Default Default 0000000000 Empty RyuJit Arm64 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c .NET 7.0 False True False True Default Default False False False Default Default Default Default Default Default Default Default Default Default Default Default Default Default Default Default Default 16 Default 6 True 168.588 μs 166.730 μs 1.6324 μs 0.5719 μs 1.5269 μs 0.5350 μs
14 Benchmark DefaultJob False Default Default Default Default Default Default 0000000000 Empty RyuJit Arm64 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c .NET 7.0 False True False True Default Default False False False Default Default Default Default Default Default Default Default Default Default Default Default Default Default Default Default Default 16 Default 7 False 455.791 μs 453.619 μs 4.1958 μs 2.1378 μs 3.7195 μs 1.9997 μs
15 Benchmark DefaultJob False Default Default Default Default Default Default 0000000000 Empty RyuJit Arm64 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c .NET 7.0 False True False True Default Default False False False Default Default Default Default Default Default Default Default Default Default Default Default Default Default Default Default Default 16 Default 7 True 470.090 μs 452.451 μs 8.8935 μs 1.4309 μs 9.8851 μs 1.3385 μs
16 Benchmark DefaultJob False Default Default Default Default Default Default 0000000000 Empty RyuJit Arm64 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c .NET 7.0 False True False True Default Default False False False Default Default Default Default Default Default Default Default Default Default Default Default Default Default Default Default Default 16 Default 8 False 770.817 μs 755.448 μs 9.3998 μs 0.7892 μs 8.7926 μs 0.7382 μs
17 Benchmark DefaultJob False Default Default Default Default Default Default 0000000000 Empty RyuJit Arm64 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c .NET 7.0 False True False True Default Default False False False Default Default Default Default Default Default Default Default Default Default Default Default Default Default Default Default Default 16 Default 8 True 371.655 μs 375.527 μs 5.7277 μs 3.0205 μs 4.7829 μs 2.5223 μs
18 Benchmark DefaultJob False Default Default Default Default Default Default 0000000000 Empty RyuJit Arm64 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c .NET 7.0 False True False True Default Default False False False Default Default Default Default Default Default Default Default Default Default Default Default Default Default Default Default Default 16 Default 9 False 507.394 μs 501.875 μs 8.8597 μs 2.1927 μs 9.0983 μs 1.9438 μs
19 Benchmark DefaultJob False Default Default Default Default Default Default 0000000000 Empty RyuJit Arm64 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c .NET 7.0 False True False True Default Default False False False Default Default Default Default Default Default Default Default Default Default Default Default Default Default Default Default Default 16 Default 9 True 933.275 μs 933.000 μs 6.8702 μs 9.1963 μs 5.7369 μs 8.6022 μs
20 Benchmark DefaultJob False Default Default Default Default Default Default 0000000000 Empty RyuJit Arm64 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c .NET 7.0 False True False True Default Default False False False Default Default Default Default Default Default Default Default Default Default Default Default Default Default Default Default Default 16 Default 10 False 7.589 μs 7.636 μs 0.1097 μs 0.0413 μs 0.1026 μs 0.0386 μs
21 Benchmark DefaultJob False Default Default Default Default Default Default 0000000000 Empty RyuJit Arm64 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c .NET 7.0 False True False True Default Default False False False Default Default Default Default Default Default Default Default Default Default Default Default Default Default Default Default Default 16 Default 10 True 8.606 μs 8.521 μs 0.0672 μs 0.0276 μs 0.0629 μs 0.0258 μs
22 Benchmark DefaultJob False Default Default Default Default Default Default 0000000000 Empty RyuJit Arm64 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c .NET 7.0 False True False True Default Default False False False Default Default Default Default Default Default Default Default Default Default Default Default Default Default Default Default Default 16 Default 11 False 7.400 μs 7.342 μs 0.0986 μs 0.0088 μs 0.0923 μs 0.0083 μs
23 Benchmark DefaultJob False Default Default Default Default Default Default 0000000000 Empty RyuJit Arm64 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c .NET 7.0 False True False True Default Default False False False Default Default Default Default Default Default Default Default Default Default Default Default Default Default Default Default Default 16 Default 11 True 2,908.736 μs 2,892.387 μs 25.5263 μs 4.6952 μs 21.3156 μs 4.3919 μs
24 Benchmark DefaultJob False Default Default Default Default Default Default 0000000000 Empty RyuJit Arm64 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c .NET 7.0 False True False True Default Default False False False Default Default Default Default Default Default Default Default Default Default Default Default Default Default Default Default Default 16 Default 12 False 21,693.302 μs 18,577.038 μs 166.2399 μs 65.5871 μs 155.5009 μs 51.2061 μs
25 Benchmark DefaultJob False Default Default Default Default Default Default 0000000000 Empty RyuJit Arm64 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c .NET 7.0 False True False True Default Default False False False Default Default Default Default Default Default Default Default Default Default Default Default Default Default Default Default Default 16 Default 12 True 23,433.128 μs 20,108.906 μs 51.6383 μs 54.5080 μs 43.1203 μs 48.3199 μs

View File

@@ -2,7 +2,7 @@
<html lang='en'>
<head>
<meta charset='utf-8' />
<title>AdventOfCode2022.App.Benchmarks-20221212-143434</title>
<title>AdventOfCode2022.App.Benchmarks-20221212-171935</title>
<style type="text/css">
table { border-collapse: collapse; display: block; width: 100%; overflow: auto; }
@@ -24,30 +24,30 @@ Apple M1 Max, 1 CPU, 10 logical and 10 physical cores
<table>
<thead><tr><th>Method</th><th>Day</th><th>IsPartOne</th><th> Mean</th><th>Error</th><th>StdDev</th>
</tr>
</thead><tbody><tr><td>Benchmark</td><td>1</td><td>False</td><td>32.141 &mu;s</td><td>0.2322 &mu;s</td><td>0.2058 &mu;s</td>
</tr><tr><td>Benchmark</td><td>1</td><td>True</td><td>32.234 &mu;s</td><td>0.1053 &mu;s</td><td>0.0879 &mu;s</td>
</tr><tr><td>Benchmark</td><td>2</td><td>False</td><td>81.493 &mu;s</td><td>0.4374 &mu;s</td><td>0.3878 &mu;s</td>
</tr><tr><td>Benchmark</td><td>2</td><td>True</td><td>80.254 &mu;s</td><td>0.3678 &mu;s</td><td>0.3441 &mu;s</td>
</tr><tr><td>Benchmark</td><td>3</td><td>False</td><td>32.799 &mu;s</td><td>0.6158 &mu;s</td><td>0.6845 &mu;s</td>
</tr><tr><td>Benchmark</td><td>3</td><td>True</td><td>67.518 &mu;s</td><td>0.4719 &mu;s</td><td>0.4415 &mu;s</td>
</tr><tr><td>Benchmark</td><td>4</td><td>False</td><td>67.787 &mu;s</td><td>0.7091 &mu;s</td><td>0.6633 &mu;s</td>
</tr><tr><td>Benchmark</td><td>4</td><td>True</td><td>54.713 &mu;s</td><td>0.4908 &mu;s</td><td>0.4098 &mu;s</td>
</tr><tr><td>Benchmark</td><td>5</td><td>False</td><td>92.630 &mu;s</td><td>0.6449 &mu;s</td><td>0.6032 &mu;s</td>
</tr><tr><td>Benchmark</td><td>5</td><td>True</td><td>80.029 &mu;s</td><td>0.7128 &mu;s</td><td>0.6667 &mu;s</td>
</tr><tr><td>Benchmark</td><td>6</td><td>False</td><td>87.383 &mu;s</td><td>1.5401 &mu;s</td><td>1.3653 &mu;s</td>
</tr><tr><td>Benchmark</td><td>6</td><td>True</td><td>168.588 &mu;s</td><td>1.6324 &mu;s</td><td>1.5269 &mu;s</td>
</tr><tr><td>Benchmark</td><td>7</td><td>False</td><td>455.791 &mu;s</td><td>4.1958 &mu;s</td><td>3.7195 &mu;s</td>
</tr><tr><td>Benchmark</td><td>7</td><td>True</td><td>470.090 &mu;s</td><td>8.8935 &mu;s</td><td>9.8851 &mu;s</td>
</tr><tr><td>Benchmark</td><td>8</td><td>False</td><td>770.817 &mu;s</td><td>9.3998 &mu;s</td><td>8.7926 &mu;s</td>
</tr><tr><td>Benchmark</td><td>8</td><td>True</td><td>371.655 &mu;s</td><td>5.7277 &mu;s</td><td>4.7829 &mu;s</td>
</tr><tr><td>Benchmark</td><td>9</td><td>False</td><td>507.394 &mu;s</td><td>8.8597 &mu;s</td><td>9.0983 &mu;s</td>
</tr><tr><td>Benchmark</td><td>9</td><td>True</td><td>933.275 &mu;s</td><td>6.8702 &mu;s</td><td>5.7369 &mu;s</td>
</tr><tr><td>Benchmark</td><td>10</td><td>False</td><td>7.589 &mu;s</td><td>0.1097 &mu;s</td><td>0.1026 &mu;s</td>
</tr><tr><td>Benchmark</td><td>10</td><td>True</td><td>8.606 &mu;s</td><td>0.0672 &mu;s</td><td>0.0629 &mu;s</td>
</tr><tr><td>Benchmark</td><td>11</td><td>False</td><td>7.400 &mu;s</td><td>0.0986 &mu;s</td><td>0.0923 &mu;s</td>
</tr><tr><td>Benchmark</td><td>11</td><td>True</td><td>2,908.736 &mu;s</td><td>25.5263 &mu;s</td><td>21.3156 &mu;s</td>
</tr><tr><td>Benchmark</td><td>12</td><td>False</td><td>21,693.302 &mu;s</td><td>166.2399 &mu;s</td><td>155.5009 &mu;s</td>
</tr><tr><td>Benchmark</td><td>12</td><td>True</td><td>23,433.128 &mu;s</td><td>51.6383 &mu;s</td><td>43.1203 &mu;s</td>
</thead><tbody><tr><td>Benchmark</td><td>1</td><td>False</td><td>33.244 &mu;s</td><td>0.2642 &mu;s</td><td>0.2471 &mu;s</td>
</tr><tr><td>Benchmark</td><td>1</td><td>True</td><td>32.513 &mu;s</td><td>0.1846 &mu;s</td><td>0.1726 &mu;s</td>
</tr><tr><td>Benchmark</td><td>2</td><td>False</td><td>81.554 &mu;s</td><td>0.2173 &mu;s</td><td>0.1815 &mu;s</td>
</tr><tr><td>Benchmark</td><td>2</td><td>True</td><td>79.599 &mu;s</td><td>0.1147 &mu;s</td><td>0.1073 &mu;s</td>
</tr><tr><td>Benchmark</td><td>3</td><td>False</td><td>31.007 &mu;s</td><td>0.5214 &mu;s</td><td>0.4877 &mu;s</td>
</tr><tr><td>Benchmark</td><td>3</td><td>True</td><td>68.288 &mu;s</td><td>0.7579 &mu;s</td><td>0.7089 &mu;s</td>
</tr><tr><td>Benchmark</td><td>4</td><td>False</td><td>67.351 &mu;s</td><td>0.3972 &mu;s</td><td>0.3521 &mu;s</td>
</tr><tr><td>Benchmark</td><td>4</td><td>True</td><td>55.999 &mu;s</td><td>0.1689 &mu;s</td><td>0.1580 &mu;s</td>
</tr><tr><td>Benchmark</td><td>5</td><td>False</td><td>92.782 &mu;s</td><td>1.0320 &mu;s</td><td>0.9654 &mu;s</td>
</tr><tr><td>Benchmark</td><td>5</td><td>True</td><td>79.805 &mu;s</td><td>0.6187 &mu;s</td><td>0.5167 &mu;s</td>
</tr><tr><td>Benchmark</td><td>6</td><td>False</td><td>84.490 &mu;s</td><td>0.2784 &mu;s</td><td>0.2468 &mu;s</td>
</tr><tr><td>Benchmark</td><td>6</td><td>True</td><td>166.730 &mu;s</td><td>0.5719 &mu;s</td><td>0.5350 &mu;s</td>
</tr><tr><td>Benchmark</td><td>7</td><td>False</td><td>453.619 &mu;s</td><td>2.1378 &mu;s</td><td>1.9997 &mu;s</td>
</tr><tr><td>Benchmark</td><td>7</td><td>True</td><td>452.451 &mu;s</td><td>1.4309 &mu;s</td><td>1.3385 &mu;s</td>
</tr><tr><td>Benchmark</td><td>8</td><td>False</td><td>755.448 &mu;s</td><td>0.7892 &mu;s</td><td>0.7382 &mu;s</td>
</tr><tr><td>Benchmark</td><td>8</td><td>True</td><td>375.527 &mu;s</td><td>3.0205 &mu;s</td><td>2.5223 &mu;s</td>
</tr><tr><td>Benchmark</td><td>9</td><td>False</td><td>501.875 &mu;s</td><td>2.1927 &mu;s</td><td>1.9438 &mu;s</td>
</tr><tr><td>Benchmark</td><td>9</td><td>True</td><td>933.000 &mu;s</td><td>9.1963 &mu;s</td><td>8.6022 &mu;s</td>
</tr><tr><td>Benchmark</td><td>10</td><td>False</td><td>7.636 &mu;s</td><td>0.0413 &mu;s</td><td>0.0386 &mu;s</td>
</tr><tr><td>Benchmark</td><td>10</td><td>True</td><td>8.521 &mu;s</td><td>0.0276 &mu;s</td><td>0.0258 &mu;s</td>
</tr><tr><td>Benchmark</td><td>11</td><td>False</td><td>7.342 &mu;s</td><td>0.0088 &mu;s</td><td>0.0083 &mu;s</td>
</tr><tr><td>Benchmark</td><td>11</td><td>True</td><td>2,892.387 &mu;s</td><td>4.6952 &mu;s</td><td>4.3919 &mu;s</td>
</tr><tr><td>Benchmark</td><td>12</td><td>False</td><td>18,577.038 &mu;s</td><td>65.5871 &mu;s</td><td>51.2061 &mu;s</td>
</tr><tr><td>Benchmark</td><td>12</td><td>True</td><td>20,108.906 &mu;s</td><td>54.5080 &mu;s</td><td>48.3199 &mu;s</td>
</tr></tbody></table>
</body>
</html>