mirror of
https://github.com/Smaug123/AdventOfCode2022
synced 2025-10-07 02:28:40 +00:00
Day 23 speedup (#38)
This commit is contained in:
@@ -48,11 +48,12 @@ module Day23 =
|
|||||||
proposedEndSteps.Clear ()
|
proposedEndSteps.Clear ()
|
||||||
|
|
||||||
for elf in board do
|
for elf in board do
|
||||||
let mutable hasAdjacentElf = false
|
let mutable adjacentElfOffsetX = Int32.MinValue
|
||||||
|
let mutable adjacentElfOffsetY = Int32.MinValue
|
||||||
|
|
||||||
for xOffset = -1 to 1 do
|
for xOffset = -1 to 1 do
|
||||||
for yOffset = -1 to 1 do
|
for yOffset = -1 to 1 do
|
||||||
if not hasAdjacentElf && (xOffset <> 0 || yOffset <> 0) then
|
if adjacentElfOffsetX = Int32.MinValue && (xOffset <> 0 || yOffset <> 0) then
|
||||||
let adjacentElf =
|
let adjacentElf =
|
||||||
{
|
{
|
||||||
X = elf.X + xOffset
|
X = elf.X + xOffset
|
||||||
@@ -60,12 +61,20 @@ module Day23 =
|
|||||||
}
|
}
|
||||||
|
|
||||||
if board.Contains adjacentElf then
|
if board.Contains adjacentElf then
|
||||||
hasAdjacentElf <- true
|
adjacentElfOffsetX <- xOffset
|
||||||
|
|
||||||
if hasAdjacentElf then
|
adjacentElfOffsetY <- yOffset
|
||||||
|
|
||||||
|
if adjacentElfOffsetX <> Int32.MinValue then
|
||||||
let mutable proposedEndPlace = ValueNone
|
let mutable proposedEndPlace = ValueNone
|
||||||
|
|
||||||
for struct (proposedX, proposedY) in proposedDirections do
|
for struct (proposedX, proposedY) in proposedDirections do
|
||||||
|
if proposedX = 0 && proposedY = adjacentElfOffsetY then
|
||||||
|
()
|
||||||
|
elif proposedY = 0 && proposedX = adjacentElfOffsetX then
|
||||||
|
()
|
||||||
|
else
|
||||||
|
|
||||||
let mutable hasElfInDestination = false
|
let mutable hasElfInDestination = false
|
||||||
|
|
||||||
if proposedEndPlace.IsNone then
|
if proposedEndPlace.IsNone then
|
||||||
|
@@ -10,9 +10,9 @@ Apple M1 Max, 1 CPU, 10 logical and 10 physical cores
|
|||||||
```
|
```
|
||||||
| Method | Day | IsPartOne | Mean | Error | StdDev |
|
| Method | Day | IsPartOne | Mean | Error | StdDev |
|
||||||
|---------- |---- |---------- |-------------:|----------:|----------:|
|
|---------- |---- |---------- |-------------:|----------:|----------:|
|
||||||
| **Benchmark** | **21** | **False** | **649.0 μs** | **4.46 μs** | **3.96 μs** |
|
| **Benchmark** | **21** | **False** | **720.1 μs** | **11.79 μs** | **11.03 μs** |
|
||||||
| **Benchmark** | **21** | **True** | **584.9 μs** | **4.29 μs** | **3.80 μs** |
|
| **Benchmark** | **21** | **True** | **588.8 μs** | **3.52 μs** | **3.12 μs** |
|
||||||
| **Benchmark** | **22** | **False** | **331.7 μs** | **2.26 μs** | **2.12 μs** |
|
| **Benchmark** | **22** | **False** | **336.7 μs** | **2.82 μs** | **2.50 μs** |
|
||||||
| **Benchmark** | **22** | **True** | **220.6 μs** | **0.70 μs** | **0.62 μs** |
|
| **Benchmark** | **22** | **True** | **220.5 μs** | **1.51 μs** | **1.41 μs** |
|
||||||
| **Benchmark** | **23** | **False** | **346,889.4 μs** | **900.55 μs** | **798.31 μs** |
|
| **Benchmark** | **23** | **False** | **333,927.6 μs** | **577.75 μs** | **512.16 μs** |
|
||||||
| **Benchmark** | **23** | **True** | **3,128.1 μs** | **4.91 μs** | **4.35 μs** |
|
| **Benchmark** | **23** | **True** | **2,782.4 μs** | **7.04 μs** | **6.58 μs** |
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
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
|
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,21,False,649.0 μs,4.46 μs,3.96 μ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,21,False,720.1 μs,11.79 μs,11.03 μ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,21,True,584.9 μs,4.29 μs,3.80 μ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,21,True,588.8 μs,3.52 μs,3.12 μ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,22,False,331.7 μs,2.26 μs,2.12 μ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,22,False,336.7 μs,2.82 μs,2.50 μ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,22,True,220.6 μs,0.70 μs,0.62 μ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,22,True,220.5 μs,1.51 μs,1.41 μ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,23,False,"346,889.4 μs",900.55 μs,798.31 μ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,23,False,"333,927.6 μs",577.75 μs,512.16 μ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,23,True,"3,128.1 μs",4.91 μs,4.35 μ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,23,True,"2,782.4 μs",7.04 μs,6.58 μs
|
||||||
|
|
@@ -2,7 +2,7 @@
|
|||||||
<html lang='en'>
|
<html lang='en'>
|
||||||
<head>
|
<head>
|
||||||
<meta charset='utf-8' />
|
<meta charset='utf-8' />
|
||||||
<title>AdventOfCode2022.App.Benchmark21To25-20221223-135302</title>
|
<title>AdventOfCode2022.App.Benchmark21To25-20221223-140756</title>
|
||||||
|
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
table { border-collapse: collapse; display: block; width: 100%; overflow: auto; }
|
table { border-collapse: collapse; display: block; width: 100%; overflow: auto; }
|
||||||
@@ -24,12 +24,12 @@ Apple M1 Max, 1 CPU, 10 logical and 10 physical cores
|
|||||||
<table>
|
<table>
|
||||||
<thead><tr><th>Method</th><th>Day</th><th>IsPartOne</th><th> Mean</th><th>Error</th><th>StdDev</th>
|
<thead><tr><th>Method</th><th>Day</th><th>IsPartOne</th><th> Mean</th><th>Error</th><th>StdDev</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead><tbody><tr><td>Benchmark</td><td>21</td><td>False</td><td>649.0 μs</td><td>4.46 μs</td><td>3.96 μs</td>
|
</thead><tbody><tr><td>Benchmark</td><td>21</td><td>False</td><td>720.1 μs</td><td>11.79 μs</td><td>11.03 μs</td>
|
||||||
</tr><tr><td>Benchmark</td><td>21</td><td>True</td><td>584.9 μs</td><td>4.29 μs</td><td>3.80 μs</td>
|
</tr><tr><td>Benchmark</td><td>21</td><td>True</td><td>588.8 μs</td><td>3.52 μs</td><td>3.12 μs</td>
|
||||||
</tr><tr><td>Benchmark</td><td>22</td><td>False</td><td>331.7 μs</td><td>2.26 μs</td><td>2.12 μs</td>
|
</tr><tr><td>Benchmark</td><td>22</td><td>False</td><td>336.7 μs</td><td>2.82 μs</td><td>2.50 μs</td>
|
||||||
</tr><tr><td>Benchmark</td><td>22</td><td>True</td><td>220.6 μs</td><td>0.70 μs</td><td>0.62 μs</td>
|
</tr><tr><td>Benchmark</td><td>22</td><td>True</td><td>220.5 μs</td><td>1.51 μs</td><td>1.41 μs</td>
|
||||||
</tr><tr><td>Benchmark</td><td>23</td><td>False</td><td>346,889.4 μs</td><td>900.55 μs</td><td>798.31 μs</td>
|
</tr><tr><td>Benchmark</td><td>23</td><td>False</td><td>333,927.6 μs</td><td>577.75 μs</td><td>512.16 μs</td>
|
||||||
</tr><tr><td>Benchmark</td><td>23</td><td>True</td><td>3,128.1 μs</td><td>4.91 μs</td><td>4.35 μs</td>
|
</tr><tr><td>Benchmark</td><td>23</td><td>True</td><td>2,782.4 μs</td><td>7.04 μs</td><td>6.58 μs</td>
|
||||||
</tr></tbody></table>
|
</tr></tbody></table>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
Reference in New Issue
Block a user