diff --git a/Akade.IndexedSet.Benchmarks/Akade.IndexedSet.Benchmarks.csproj b/Akade.IndexedSet.Benchmarks/Akade.IndexedSet.Benchmarks.csproj index b836769..409802b 100644 --- a/Akade.IndexedSet.Benchmarks/Akade.IndexedSet.Benchmarks.csproj +++ b/Akade.IndexedSet.Benchmarks/Akade.IndexedSet.Benchmarks.csproj @@ -2,7 +2,7 @@ Exe - net6.0;net7.0;net8.0 + net6.0;net8.0 enable enable diff --git a/Akade.IndexedSet.Benchmarks/ConcurrentSetBenchmarks.cs b/Akade.IndexedSet.Benchmarks/ConcurrentSetBenchmarks.cs index b26c35b..6c1c2e3 100644 --- a/Akade.IndexedSet.Benchmarks/ConcurrentSetBenchmarks.cs +++ b/Akade.IndexedSet.Benchmarks/ConcurrentSetBenchmarks.cs @@ -8,7 +8,6 @@ namespace Akade.IndexedSet.Benchmarks; [GroupBenchmarksBy(BenchmarkLogicalGroupRule.ByCategory)] [MemoryDiagnoser] [SimpleJob(BenchmarkDotNet.Jobs.RuntimeMoniker.Net60)] -[SimpleJob(BenchmarkDotNet.Jobs.RuntimeMoniker.Net70)] [SimpleJob(BenchmarkDotNet.Jobs.RuntimeMoniker.Net80)] [JsonExporter] public class ConcurrentSetBenchmarks diff --git a/Akade.IndexedSet.Benchmarks/FullTextIndexBenchmarks.cs b/Akade.IndexedSet.Benchmarks/FullTextIndexBenchmarks.cs index fd2f9dc..cba600a 100644 --- a/Akade.IndexedSet.Benchmarks/FullTextIndexBenchmarks.cs +++ b/Akade.IndexedSet.Benchmarks/FullTextIndexBenchmarks.cs @@ -6,7 +6,6 @@ namespace Akade.IndexedSet.Benchmarks; [MemoryDiagnoser] [GroupBenchmarksBy(BenchmarkLogicalGroupRule.ByCategory)] [SimpleJob(BenchmarkDotNet.Jobs.RuntimeMoniker.Net60)] -[SimpleJob(BenchmarkDotNet.Jobs.RuntimeMoniker.Net70)] [SimpleJob(BenchmarkDotNet.Jobs.RuntimeMoniker.Net80)] [JsonExporter] public class FullTextIndexBenchmarks diff --git a/Akade.IndexedSet.Benchmarks/MultiValueIndexBenchmarks.cs b/Akade.IndexedSet.Benchmarks/MultiValueIndexBenchmarks.cs index 02967f7..cce8296 100644 --- a/Akade.IndexedSet.Benchmarks/MultiValueIndexBenchmarks.cs +++ b/Akade.IndexedSet.Benchmarks/MultiValueIndexBenchmarks.cs @@ -5,7 +5,6 @@ namespace Akade.IndexedSet.Benchmarks; [MemoryDiagnoser] [DisassemblyDiagnoser] [SimpleJob(BenchmarkDotNet.Jobs.RuntimeMoniker.Net60)] -[SimpleJob(BenchmarkDotNet.Jobs.RuntimeMoniker.Net70)] [SimpleJob(BenchmarkDotNet.Jobs.RuntimeMoniker.Net80)] [JsonExporter] public class MultiValueIndexBenchmarks diff --git a/Akade.IndexedSet.Benchmarks/PrefixIndexBenchmarks.cs b/Akade.IndexedSet.Benchmarks/PrefixIndexBenchmarks.cs index f85f0e9..141760a 100644 --- a/Akade.IndexedSet.Benchmarks/PrefixIndexBenchmarks.cs +++ b/Akade.IndexedSet.Benchmarks/PrefixIndexBenchmarks.cs @@ -6,7 +6,6 @@ namespace Akade.IndexedSet.Benchmarks; [MemoryDiagnoser] [GroupBenchmarksBy(BenchmarkLogicalGroupRule.ByCategory)] [SimpleJob(BenchmarkDotNet.Jobs.RuntimeMoniker.Net60)] -[SimpleJob(BenchmarkDotNet.Jobs.RuntimeMoniker.Net70)] [SimpleJob(BenchmarkDotNet.Jobs.RuntimeMoniker.Net80)] [JsonExporter] public class PrefixIndexBenchmarks diff --git a/Akade.IndexedSet.Benchmarks/RangeIndexBenchmarks.cs b/Akade.IndexedSet.Benchmarks/RangeIndexBenchmarks.cs index 7ca06ce..5c5bcdb 100644 --- a/Akade.IndexedSet.Benchmarks/RangeIndexBenchmarks.cs +++ b/Akade.IndexedSet.Benchmarks/RangeIndexBenchmarks.cs @@ -6,7 +6,6 @@ namespace Akade.IndexedSet.Benchmarks; [MemoryDiagnoser] [GroupBenchmarksBy(BenchmarkLogicalGroupRule.ByCategory)] [SimpleJob(BenchmarkDotNet.Jobs.RuntimeMoniker.Net60)] -[SimpleJob(BenchmarkDotNet.Jobs.RuntimeMoniker.Net70)] [SimpleJob(BenchmarkDotNet.Jobs.RuntimeMoniker.Net80)] [JsonExporter] public class RangeIndexBenchmarks diff --git a/Akade.IndexedSet.Benchmarks/RealWorld/EventSourcedAggregateCache/QueryBenchmarks.cs b/Akade.IndexedSet.Benchmarks/RealWorld/EventSourcedAggregateCache/QueryBenchmarks.cs index f8427fc..116a133 100644 --- a/Akade.IndexedSet.Benchmarks/RealWorld/EventSourcedAggregateCache/QueryBenchmarks.cs +++ b/Akade.IndexedSet.Benchmarks/RealWorld/EventSourcedAggregateCache/QueryBenchmarks.cs @@ -5,7 +5,6 @@ namespace Akade.IndexedSet.Benchmarks.RealWorld.EventSourcedAggregateCache; [SimpleJob(BenchmarkDotNet.Jobs.RuntimeMoniker.Net60)] -[SimpleJob(BenchmarkDotNet.Jobs.RuntimeMoniker.Net70)] [SimpleJob(BenchmarkDotNet.Jobs.RuntimeMoniker.Net80)] public class QueryBenchmarks { diff --git a/Akade.IndexedSet.Benchmarks/RealWorld/EventSourcedAggregateCache/RehydrationBenchmark.cs b/Akade.IndexedSet.Benchmarks/RealWorld/EventSourcedAggregateCache/RehydrationBenchmark.cs index 00ad774..118dd91 100644 --- a/Akade.IndexedSet.Benchmarks/RealWorld/EventSourcedAggregateCache/RehydrationBenchmark.cs +++ b/Akade.IndexedSet.Benchmarks/RealWorld/EventSourcedAggregateCache/RehydrationBenchmark.cs @@ -6,7 +6,6 @@ namespace Akade.IndexedSet.Benchmarks.RealWorld; [SimpleJob(BenchmarkDotNet.Jobs.RuntimeMoniker.Net60)] -[SimpleJob(BenchmarkDotNet.Jobs.RuntimeMoniker.Net70)] [SimpleJob(BenchmarkDotNet.Jobs.RuntimeMoniker.Net80)] public class RehydrationBenchmark { diff --git a/Akade.IndexedSet.Benchmarks/UniqueLookupBenchmarks.cs b/Akade.IndexedSet.Benchmarks/UniqueLookupBenchmarks.cs index 1b3161e..79bfd33 100644 --- a/Akade.IndexedSet.Benchmarks/UniqueLookupBenchmarks.cs +++ b/Akade.IndexedSet.Benchmarks/UniqueLookupBenchmarks.cs @@ -5,7 +5,6 @@ namespace Akade.IndexedSet.Benchmarks; [MemoryDiagnoser] [DisassemblyDiagnoser] [SimpleJob(BenchmarkDotNet.Jobs.RuntimeMoniker.Net60)] -[SimpleJob(BenchmarkDotNet.Jobs.RuntimeMoniker.Net70)] [SimpleJob(BenchmarkDotNet.Jobs.RuntimeMoniker.Net80)] [JsonExporter] public class UniqueIndexBenchmarks diff --git a/Akade.IndexedSet.Tests/Akade.IndexedSet.Tests.csproj b/Akade.IndexedSet.Tests/Akade.IndexedSet.Tests.csproj index 31c9694..f4d1c00 100644 --- a/Akade.IndexedSet.Tests/Akade.IndexedSet.Tests.csproj +++ b/Akade.IndexedSet.Tests/Akade.IndexedSet.Tests.csproj @@ -1,7 +1,7 @@ - net6.0;net7.0;net8.0 + net6.0;net8.0 enable enable false diff --git a/Akade.IndexedSet/Akade.IndexedSet.csproj b/Akade.IndexedSet/Akade.IndexedSet.csproj index e4c4695..4b3464b 100644 --- a/Akade.IndexedSet/Akade.IndexedSet.csproj +++ b/Akade.IndexedSet/Akade.IndexedSet.csproj @@ -1,6 +1,6 @@  - net6.0;net7.0;net8.0 + net6.0;net8.0 enable enable true diff --git a/Akade.IndexedSet/CompatibilitySuppressions.xml b/Akade.IndexedSet/CompatibilitySuppressions.xml index c3aade8..078ef0a 100644 --- a/Akade.IndexedSet/CompatibilitySuppressions.xml +++ b/Akade.IndexedSet/CompatibilitySuppressions.xml @@ -4,7 +4,7 @@ CP0001 T:Akade.IndexedSet.ExperimentalAttribute - lib/net7.0/Akade.IndexedSet.dll + lib/net6.0/Akade.IndexedSet.dll lib/net8.0/Akade.IndexedSet.dll \ No newline at end of file diff --git a/Akade.IndexedSet/PublicAPI/net7.0/PublicAPI.Shipped.txt b/Akade.IndexedSet/PublicAPI/net7.0/PublicAPI.Shipped.txt deleted file mode 100644 index e69de29..0000000 diff --git a/Akade.IndexedSet/PublicAPI/net7.0/PublicAPI.Unshipped.txt b/Akade.IndexedSet/PublicAPI/net7.0/PublicAPI.Unshipped.txt deleted file mode 100644 index d72b5b2..0000000 --- a/Akade.IndexedSet/PublicAPI/net7.0/PublicAPI.Unshipped.txt +++ /dev/null @@ -1,4 +0,0 @@ -Akade.IndexedSet.ExperimentalAttribute.UrlFormat.get -> string? -Akade.IndexedSet.ExperimentalAttribute.UrlFormat.set -> void -override Akade.IndexedSet.ExperimentalAttribute.ToString() -> string! -Akade.IndexedSet.ExperimentalAttribute diff --git a/Analyzers/Akade.IndexedSet.Analyzers/Akade.IndexedSet.Analyzers.csproj b/Analyzers/Akade.IndexedSet.Analyzers/Akade.IndexedSet.Analyzers.csproj index 12e3ae4..d89c978 100644 --- a/Analyzers/Akade.IndexedSet.Analyzers/Akade.IndexedSet.Analyzers.csproj +++ b/Analyzers/Akade.IndexedSet.Analyzers/Akade.IndexedSet.Analyzers.csproj @@ -1,8 +1,8 @@ - + netstandard2.0 - 11.0 + 12.0 enable false true diff --git a/SourceGenerator/Akade.IndexedSet.InternalSourceGenerator.Tests/Akade.IndexedSet.InternalSourceGenerator.Tests.csproj b/SourceGenerator/Akade.IndexedSet.InternalSourceGenerator.Tests/Akade.IndexedSet.InternalSourceGenerator.Tests.csproj index 7f23b27..a9b3729 100644 --- a/SourceGenerator/Akade.IndexedSet.InternalSourceGenerator.Tests/Akade.IndexedSet.InternalSourceGenerator.Tests.csproj +++ b/SourceGenerator/Akade.IndexedSet.InternalSourceGenerator.Tests/Akade.IndexedSet.InternalSourceGenerator.Tests.csproj @@ -1,7 +1,7 @@ - net7.0 + net8.0 enable enable false diff --git a/SourceGenerator/Akade.IndexedSet.InternalSourceGenerator/Akade.IndexedSet.InternalSourceGenerator.csproj b/SourceGenerator/Akade.IndexedSet.InternalSourceGenerator/Akade.IndexedSet.InternalSourceGenerator.csproj index 4011d57..10999af 100644 --- a/SourceGenerator/Akade.IndexedSet.InternalSourceGenerator/Akade.IndexedSet.InternalSourceGenerator.csproj +++ b/SourceGenerator/Akade.IndexedSet.InternalSourceGenerator/Akade.IndexedSet.InternalSourceGenerator.csproj @@ -2,7 +2,7 @@ netstandard2.0 - 11.0 + 12.0 enable false true diff --git a/docs/Benchmarks.md b/docs/Benchmarks.md index 56b2849..8d57de8 100644 --- a/docs/Benchmarks.md +++ b/docs/Benchmarks.md @@ -12,8 +12,9 @@ AMD Ryzen 9 5900X, 1 CPU, 24 logical and 12 physical cores ``` All benchmarks are currenlty using *1k elements*. Benchmarks showing the scaling is on the roadmap - expect IndexedSet to scale much -much better than the naive LINQ Queries. As .NET 7.0 brings in [a bunch of performance improvements](https://devblogs.microsoft.com/dotnet/performance_improvements_in_net_7/), -the benchmarks are run against both .NET 6 and 7. +much better than the naive LINQ Queries. As .NET 8.0 brings in [a bunch of performance improvements](https://devblogs.microsoft.com/dotnet/performance-improvements-in-net-8/), +the benchmarks are run against both .NET 6 and 8. +.NET 7 is out of support and hence, no longer an explicit target (but the library can be consumed from .NET 7 without any issue). ## Unique-Index | Method | Job | Runtime | Mean | Error | StdDev | Ratio | Code Size | Gen0 | Allocated | Alloc Ratio | @@ -23,11 +24,6 @@ the benchmarks are run against both .NET 6 and 7. | Unique_IndexedSet_PrimaryKey | .NET 6.0 | .NET 6.0 | 1,722.4 ns | 2.05 ns | 1.91 ns | 0.010 | 512 B | - | - | 0.00 | | Unique_IndexedSet_Single | .NET 6.0 | .NET 6.0 | 1,576.3 ns | 2.44 ns | 2.28 ns | 0.009 | 1,224 B | - | - | 0.00 | | | | | | | | | | | | | -| Unqiue_Linq | .NET 7.0 | .NET 7.0 | 159,863.0 ns | 3,044.18 ns | 3,257.24 ns | 1.000 | 696 B | 0.7324 | 12800 B | 1.00 | -| Unique_Dictionary | .NET 7.0 | .NET 7.0 | 398.4 ns | 0.78 ns | 0.73 ns | 0.002 | 590 B | - | - | 0.00 | -| Unique_IndexedSet_PrimaryKey | .NET 7.0 | .NET 7.0 | 1,354.7 ns | 1.25 ns | 1.11 ns | 0.008 | 1,084 B | - | - | 0.00 | -| Unique_IndexedSet_Single | .NET 7.0 | .NET 7.0 | 1,402.5 ns | 3.28 ns | 3.07 ns | 0.009 | 1,145 B | - | - | 0.00 | -| | | | | | | | | | | | | Unqiue_Linq | .NET 8.0 | .NET 8.0 | 91,877.8 ns | 1,426.28 ns | 1,191.01 ns | 1.000 | 1,040 B | 0.7324 | 12800 B | 1.00 | | Unique_Dictionary | .NET 8.0 | .NET 8.0 | 358.5 ns | 0.75 ns | 0.63 ns | 0.004 | 514 B | - | - | 0.00 | | Unique_IndexedSet_PrimaryKey | .NET 8.0 | .NET 8.0 | 823.1 ns | 0.71 ns | 0.63 ns | 0.009 | 1,650 B | - | - | 0.00 | @@ -43,10 +39,6 @@ the benchmarks are run against both .NET 6 and 7. | Multivalue_Lookup | .NET 6.0 | .NET 6.0 | 12.502 μs | 0.0712 μs | 0.0595 μs | 12.510 μs | 0.20 | 0.0153 | 1,768 B | 360 B | 0.21 | | Multivalue_IndexedSet | .NET 6.0 | .NET 6.0 | 13.423 μs | 0.1427 μs | 0.1335 μs | 13.456 μs | 0.21 | 0.0153 | 2,729 B | 360 B | 0.21 | | | | | | | | | | | | | | -| MultiValue_Linq | .NET 7.0 | .NET 7.0 | 52.668 μs | 0.8171 μs | 0.6823 μs | 52.613 μs | 1.00 | 0.0610 | 2,569 B | 1680 B | 1.00 | -| Multivalue_Lookup | .NET 7.0 | .NET 7.0 | 11.812 μs | 0.0435 μs | 0.0386 μs | 11.802 μs | 0.22 | 0.0153 | 1,746 B | 360 B | 0.21 | -| Multivalue_IndexedSet | .NET 7.0 | .NET 7.0 | 12.874 μs | 0.0545 μs | 0.0483 μs | 12.870 μs | 0.24 | 0.0153 | 2,638 B | 360 B | 0.21 | -| | | | | | | | | | | | | | MultiValue_Linq | .NET 8.0 | .NET 8.0 | 38.470 μs | 0.7642 μs | 1.4723 μs | 37.729 μs | 1.00 | 0.0610 | 3,847 B | 1680 B | 1.00 | | Multivalue_Lookup | .NET 8.0 | .NET 8.0 | 8.295 μs | 0.1240 μs | 0.0968 μs | 8.321 μs | 0.21 | 0.0153 | 2,864 B | 360 B | 0.21 | | Multivalue_IndexedSet | .NET 8.0 | .NET 8.0 | 8.349 μs | 0.1221 μs | 0.1142 μs | 8.289 μs | 0.21 | 0.0153 | 3,639 B | 360 B | 0.21 | @@ -59,36 +51,24 @@ the benchmarks are run against both .NET 6 and 7. | LessThan_Linq | .NET 6.0 | .NET 6.0 | 17,043.924 ns | 50.4800 ns | 44.7492 ns | 17,055.573 ns | 1.00 | - | - | 160 B | 1.00 | | LessThan_IndexedSet | .NET 6.0 | .NET 6.0 | 3,665.244 ns | 9.8124 ns | 7.6609 ns | 3,665.690 ns | 0.21 | 0.0038 | - | 72 B | 0.45 | | | | | | | | | | | | | | -| LessThan_Linq | .NET 7.0 | .NET 7.0 | 18,236.447 ns | 64.3406 ns | 71.5144 ns | 18,234.296 ns | 1.00 | - | - | 160 B | 1.00 | -| LessThan_IndexedSet | .NET 7.0 | .NET 7.0 | 3,371.307 ns | 55.9840 ns | 49.6284 ns | 3,392.188 ns | 0.18 | 0.0038 | - | 72 B | 0.45 | -| | | | | | | | | | | | | | LessThan_Linq | .NET 8.0 | .NET 8.0 | 11,979.139 ns | 64.8170 ns | 57.4586 ns | 11,976.392 ns | 1.00 | - | - | 160 B | 1.00 | | LessThan_IndexedSet | .NET 8.0 | .NET 8.0 | 2,932.307 ns | 7.9799 ns | 6.6635 ns | 2,929.376 ns | 0.24 | 0.0038 | - | 72 B | 0.45 | | | | | | | | | | | | | | | Min_Linq | .NET 6.0 | .NET 6.0 | 77,685.195 ns | 1,543.5157 ns | 1,515.9388 ns | 77,807.800 ns | 1.000 | - | - | 40 B | 1.00 | | Min_IndexedSet | .NET 6.0 | .NET 6.0 | 10.182 ns | 0.1023 ns | 0.0957 ns | 10.179 ns | 0.000 | - | - | - | 0.00 | | | | | | | | | | | | | | -| Min_Linq | .NET 7.0 | .NET 7.0 | 69,521.446 ns | 831.1203 ns | 777.4305 ns | 69,880.981 ns | 1.000 | - | - | 40 B | 1.00 | -| Min_IndexedSet | .NET 7.0 | .NET 7.0 | 10.145 ns | 0.0278 ns | 0.0247 ns | 10.143 ns | 0.000 | - | - | - | 0.00 | -| | | | | | | | | | | | | | Min_Linq | .NET 8.0 | .NET 8.0 | 38,149.004 ns | 761.1209 ns | 845.9839 ns | 38,267.505 ns | 1.000 | - | - | 40 B | 1.00 | | Min_IndexedSet | .NET 8.0 | .NET 8.0 | 5.042 ns | 0.0304 ns | 0.0285 ns | 5.040 ns | 0.000 | - | - | - | 0.00 | | | | | | | | | | | | | | | Paging_Linq | .NET 6.0 | .NET 6.0 | 74,859.271 ns | 1,454.0230 ns | 1,360.0940 ns | 75,383.374 ns | 1.000 | 9.5215 | 2.3193 | 160352 B | 1.000 | | Paging_IndexedSet | .NET 6.0 | .NET 6.0 | 184.119 ns | 3.5691 ns | 3.6652 ns | 181.758 ns | 0.002 | 0.0277 | - | 464 B | 0.003 | | | | | | | | | | | | | | -| Paging_Linq | .NET 7.0 | .NET 7.0 | 71,963.940 ns | 1,433.0480 ns | 1,407.4447 ns | 72,374.396 ns | 1.000 | 9.5215 | 2.3193 | 160352 B | 1.000 | -| Paging_IndexedSet | .NET 7.0 | .NET 7.0 | 178.378 ns | 3.5353 ns | 3.6305 ns | 176.272 ns | 0.002 | 0.0277 | - | 464 B | 0.003 | -| | | | | | | | | | | | | | Paging_Linq | .NET 8.0 | .NET 8.0 | 45,858.666 ns | 907.2320 ns | 1,211.1286 ns | 44,941.455 ns | 1.000 | 9.5215 | 2.3804 | 160352 B | 1.000 | | Paging_IndexedSet | .NET 8.0 | .NET 8.0 | 141.107 ns | 2.0993 ns | 1.7530 ns | 140.655 ns | 0.003 | 0.0277 | - | 464 B | 0.003 | | | | | | | | | | | | | | | Range_Linq | .NET 6.0 | .NET 6.0 | 21,044.604 ns | 446.4377 ns | 1,316.3317 ns | 21,423.367 ns | 1.00 | - | - | 168 B | 1.00 | | Range_IndexedSet | .NET 6.0 | .NET 6.0 | 3,174.231 ns | 18.6308 ns | 14.5457 ns | 3,170.776 ns | 0.15 | 0.0038 | - | 72 B | 0.43 | | | | | | | | | | | | | | -| Range_Linq | .NET 7.0 | .NET 7.0 | 26,633.693 ns | 72.4499 ns | 64.2249 ns | 26,615.152 ns | 1.00 | - | - | 160 B | 1.00 | -| Range_IndexedSet | .NET 7.0 | .NET 7.0 | 2,692.566 ns | 15.0919 ns | 13.3786 ns | 2,691.862 ns | 0.10 | 0.0038 | - | 72 B | 0.45 | -| | | | | | | | | | | | | | Range_Linq | .NET 8.0 | .NET 8.0 | 13,434.074 ns | 48.3800 ns | 45.2547 ns | 13,429.517 ns | 1.00 | - | - | 160 B | 1.00 | | Range_IndexedSet | .NET 8.0 | .NET 8.0 | 2,278.306 ns | 2.3033 ns | 2.0418 ns | 2,277.767 ns | 0.17 | 0.0038 | - | 72 B | 0.45 | @@ -100,18 +80,12 @@ the benchmarks are run against both .NET 6 and 7. | FuzzyStartsWith_Linq | .NET 6.0 | .NET 6.0 | 64,420.4 ns | 985.66 ns | 921.99 ns | 1.00 | 5.7373 | 96088 B | 1.000 | | FuzzyStartsWith_IndexedSet | .NET 6.0 | .NET 6.0 | 21,313.8 ns | 166.94 ns | 139.40 ns | 0.33 | - | 240 B | 0.002 | | | | | | | | | | | | -| FuzzyStartsWith_Linq | .NET 7.0 | .NET 7.0 | 60,372.9 ns | 864.25 ns | 808.42 ns | 1.00 | 5.7373 | 96088 B | 1.000 | -| FuzzyStartsWith_IndexedSet | .NET 7.0 | .NET 7.0 | 16,923.2 ns | 33.58 ns | 28.04 ns | 0.28 | - | 240 B | 0.002 | -| | | | | | | | | | | | FuzzyStartsWith_Linq | .NET 8.0 | .NET 8.0 | 64,301.0 ns | 994.86 ns | 881.92 ns | 1.00 | 5.7373 | 96088 B | 1.000 | | FuzzyStartsWith_IndexedSet | .NET 8.0 | .NET 8.0 | 15,486.3 ns | 74.07 ns | 65.66 ns | 0.24 | - | 240 B | 0.002 | | | | | | | | | | | | | StartsWith_Linq | .NET 6.0 | .NET 6.0 | 3,861.6 ns | 15.43 ns | 12.88 ns | 1.00 | 0.0076 | 128 B | 1.00 | | StartsWith_IndexedSet | .NET 6.0 | .NET 6.0 | 602.1 ns | 1.38 ns | 1.22 ns | 0.16 | 0.0086 | 144 B | 1.12 | | | | | | | | | | | | -| StartsWith_Linq | .NET 7.0 | .NET 7.0 | 2,612.8 ns | 17.21 ns | 15.26 ns | 1.00 | 0.0076 | 128 B | 1.00 | -| StartsWith_IndexedSet | .NET 7.0 | .NET 7.0 | 591.6 ns | 2.02 ns | 1.79 ns | 0.23 | 0.0086 | 144 B | 1.12 | -| | | | | | | | | | | | StartsWith_Linq | .NET 8.0 | .NET 8.0 | 2,188.6 ns | 5.78 ns | 5.12 ns | 1.00 | 0.0076 | 128 B | 1.00 | | StartsWith_IndexedSet | .NET 8.0 | .NET 8.0 | 613.7 ns | 2.47 ns | 2.31 ns | 0.28 | 0.0086 | 144 B | 1.12 | @@ -124,18 +98,12 @@ the benchmarks are run against both .NET 6 and 7. | Contains_Linq | .NET 6.0 | .NET 6.0 | 16,443.7 ns | 101.95 ns | 90.37 ns | 1.00 | - | 408 B | 1.00 | | Contains_IndexedSet | .NET 6.0 | .NET 6.0 | 484.1 ns | 5.68 ns | 5.31 ns | 0.03 | 0.0238 | 400 B | 0.98 | | | | | | | | | | | | -| Contains_Linq | .NET 7.0 | .NET 7.0 | 6,629.2 ns | 22.21 ns | 19.69 ns | 1.00 | 0.0229 | 408 B | 1.00 | -| Contains_IndexedSet | .NET 7.0 | .NET 7.0 | 476.3 ns | 5.30 ns | 4.96 ns | 0.07 | 0.0238 | 400 B | 0.98 | -| | | | | | | | | | | | Contains_Linq | .NET 8.0 | .NET 8.0 | 5,714.5 ns | 21.24 ns | 18.83 ns | 1.00 | 0.0229 | 408 B | 1.00 | | Contains_IndexedSet | .NET 8.0 | .NET 8.0 | 493.7 ns | 4.41 ns | 4.12 ns | 0.09 | 0.0238 | 400 B | 0.98 | | | | | | | | | | | | | FuzzyContains_Linq | .NET 6.0 | .NET 6.0 | 7,116,201.8 ns | 53,574.33 ns | 50,113.46 ns | 1.00 | 281.2500 | 4831744 B | 1.000 | | FuzzyContains_IndexedSet | .NET 6.0 | .NET 6.0 | 172,160.2 ns | 424.16 ns | 354.20 ns | 0.02 | - | 608 B | 0.000 | | | | | | | | | | | | -| FuzzyContains_Linq | .NET 7.0 | .NET 7.0 | 6,386,545.8 ns | 49,595.97 ns | 46,392.10 ns | 1.00 | 281.2500 | 4831741 B | 1.000 | -| FuzzyContains_IndexedSet | .NET 7.0 | .NET 7.0 | 144,319.7 ns | 397.99 ns | 352.81 ns | 0.02 | - | 608 B | 0.000 | -| | | | | | | | | | | | FuzzyContains_Linq | .NET 8.0 | .NET 8.0 | 6,082,955.1 ns | 10,276.95 ns | 9,613.07 ns | 1.00 | 281.2500 | 4831744 B | 1.000 | | FuzzyContains_IndexedSet | .NET 8.0 | .NET 8.0 | 137,149.8 ns | 997.75 ns | 933.30 ns | 0.02 | - | 608 B | 0.000 | @@ -148,27 +116,18 @@ the benchmarks are run against both .NET 6 and 7. | FullTextLookup | .NET 6.0 | .NET 6.0 | 24,811.507 ns | 103.8346 ns | 81.0672 ns | 1.00 | 0.00 | - | 424 B | 1.00 | | ConcurrentFullTextLookup | .NET 6.0 | .NET 6.0 | 24,738.256 ns | 98.5952 ns | 82.3314 ns | 1.00 | 0.01 | - | 464 B | 1.09 | | | | | | | | | | | | | -| FullTextLookup | .NET 7.0 | .NET 7.0 | 19,383.554 ns | 202.7954 ns | 189.6950 ns | 1.00 | 0.00 | - | 424 B | 1.00 | -| ConcurrentFullTextLookup | .NET 7.0 | .NET 7.0 | 19,549.825 ns | 43.3496 ns | 33.8445 ns | 1.01 | 0.01 | - | 464 B | 1.09 | -| | | | | | | | | | | | | FullTextLookup | .NET 8.0 | .NET 8.0 | 17,805.678 ns | 58.7119 ns | 45.8384 ns | 1.00 | 0.00 | - | 424 B | 1.00 | | ConcurrentFullTextLookup | .NET 8.0 | .NET 8.0 | 17,847.506 ns | 55.7845 ns | 49.4515 ns | 1.00 | 0.00 | - | 464 B | 1.09 | | | | | | | | | | | | | | LessThanLookup | .NET 6.0 | .NET 6.0 | 25.600 ns | 0.5139 ns | 0.4807 ns | 1.00 | 0.00 | 0.0038 | 64 B | 1.00 | | ConcurrentLessThanLookup | .NET 6.0 | .NET 6.0 | 58.042 ns | 1.1181 ns | 1.0459 ns | 2.27 | 0.05 | 0.0038 | 64 B | 1.00 | | | | | | | | | | | | | -| LessThanLookup | .NET 7.0 | .NET 7.0 | 21.831 ns | 0.0502 ns | 0.0445 ns | 1.00 | 0.00 | - | - | NA | -| ConcurrentLessThanLookup | .NET 7.0 | .NET 7.0 | 50.047 ns | 0.2518 ns | 0.2356 ns | 2.29 | 0.01 | - | - | NA | -| | | | | | | | | | | | | LessThanLookup | .NET 8.0 | .NET 8.0 | 9.387 ns | 0.0318 ns | 0.0282 ns | 1.00 | 0.00 | - | - | NA | | ConcurrentLessThanLookup | .NET 8.0 | .NET 8.0 | 49.537 ns | 1.0059 ns | 1.7617 ns | 5.38 | 0.12 | - | - | NA | | | | | | | | | | | | | | UniqueLookup | .NET 6.0 | .NET 6.0 | 15.309 ns | 0.0549 ns | 0.0459 ns | 1.00 | 0.00 | - | - | NA | | ConcurrentUniqueLookup | .NET 6.0 | .NET 6.0 | 33.912 ns | 0.1571 ns | 0.1393 ns | 2.22 | 0.01 | - | - | NA | | | | | | | | | | | | | -| UniqueLookup | .NET 7.0 | .NET 7.0 | 15.227 ns | 0.0566 ns | 0.0473 ns | 1.00 | 0.00 | - | - | NA | -| ConcurrentUniqueLookup | .NET 7.0 | .NET 7.0 | 33.647 ns | 0.0883 ns | 0.0737 ns | 2.21 | 0.01 | - | - | NA | -| | | | | | | | | | | | | UniqueLookup | .NET 8.0 | .NET 8.0 | 9.572 ns | 0.0428 ns | 0.0379 ns | 1.00 | 0.00 | - | - | NA | | ConcurrentUniqueLookup | .NET 8.0 | .NET 8.0 | 34.708 ns | 0.7367 ns | 2.1721 ns | 3.33 | 0.20 | - | - | NA |