From cb799710d0c021a794ee32e08a0e0004b9620be9 Mon Sep 17 00:00:00 2001 From: stubbfelnewpc Date: Sat, 2 Apr 2022 15:18:01 +0000 Subject: [PATCH] add report --- Program.cs => scorecompare/Program.cs | 14 +++ scorecompare/ScoreComparer.md | 112 ++++++++++++++++++ .../scorecompare.csproj | 0 3 files changed, 126 insertions(+) rename Program.cs => scorecompare/Program.cs (91%) create mode 100644 scorecompare/ScoreComparer.md rename benchmarks.csproj => scorecompare/scorecompare.csproj (100%) diff --git a/Program.cs b/scorecompare/Program.cs similarity index 91% rename from Program.cs rename to scorecompare/Program.cs index 96b29da..a34f4b7 100644 --- a/Program.cs +++ b/scorecompare/Program.cs @@ -42,6 +42,10 @@ namespace MyBenchmarks [Benchmark] public int Compare() => m_Original.CompareTo(m_Original); + [Benchmark] + public int CompareFast() => m_Original.CompareFastTo(m_Original); + + public sealed class RefArrayScore : IComparable { public static RefArrayScore MissMatch { get; } = new RefArrayScore(); @@ -198,6 +202,16 @@ namespace MyBenchmarks } + public int CompareFastTo(object? obj) + { + if (!(obj is Score other)) + { + return -1; + } + + return ScoreFlag.CompareTo(other.ScoreFlag); + } + public bool Equals(RefSpanScore? other) { return ReferenceEquals(this, other); diff --git a/scorecompare/ScoreComparer.md b/scorecompare/ScoreComparer.md new file mode 100644 index 0000000..d807fcc --- /dev/null +++ b/scorecompare/ScoreComparer.md @@ -0,0 +1,112 @@ +``` ini + +BenchmarkDotNet=v0.13.1, OS=debian 11 (container) +Intel Core i7-7800X CPU 3.50GHz (Kaby Lake), 1 CPU, 12 logical and 6 physical cores +.NET SDK=6.0.200 + [Host] : .NET 6.0.2 (6.0.222.6406), X64 RyuJIT + DefaultJob : .NET 6.0.2 (6.0.222.6406), X64 RyuJIT + + +``` +| Method | OriginalIndex | AlternateIndex | Mean | Error | StdDev | +|------------- |-------------- |--------------- |----------:|----------:|----------:| +| **CompareArray** | **0** | **0** | **23.855 ns** | **0.0141 ns** | **0.0132 ns** | +| CompareSpan | 0 | 0 | 18.339 ns | 0.0852 ns | 0.0711 ns | +| Compare | 0 | 0 | 2.965 ns | 0.0035 ns | 0.0033 ns | +| CompareFast | 0 | 0 | 1.379 ns | 0.0034 ns | 0.0032 ns | +| **CompareArray** | **0** | **1** | **26.154 ns** | **0.0119 ns** | **0.0106 ns** | +| CompareSpan | 0 | 1 | 20.360 ns | 0.0199 ns | 0.0177 ns | +| Compare | 0 | 1 | 2.974 ns | 0.0037 ns | 0.0031 ns | +| CompareFast | 0 | 1 | 1.380 ns | 0.0033 ns | 0.0031 ns | +| **CompareArray** | **0** | **2** | **29.015 ns** | **0.0255 ns** | **0.0226 ns** | +| CompareSpan | 0 | 2 | 22.792 ns | 0.0194 ns | 0.0181 ns | +| Compare | 0 | 2 | 2.963 ns | 0.0045 ns | 0.0040 ns | +| CompareFast | 0 | 2 | 1.378 ns | 0.0034 ns | 0.0032 ns | +| **CompareArray** | **0** | **3** | **34.291 ns** | **0.0667 ns** | **0.0591 ns** | +| CompareSpan | 0 | 3 | 24.488 ns | 0.0278 ns | 0.0217 ns | +| Compare | 0 | 3 | 2.966 ns | 0.0022 ns | 0.0017 ns | +| CompareFast | 0 | 3 | 1.378 ns | 0.0030 ns | 0.0027 ns | +| **CompareArray** | **0** | **4** | **36.389 ns** | **0.0693 ns** | **0.0648 ns** | +| CompareSpan | 0 | 4 | 26.344 ns | 0.0176 ns | 0.0156 ns | +| Compare | 0 | 4 | 2.963 ns | 0.0024 ns | 0.0020 ns | +| CompareFast | 0 | 4 | 1.378 ns | 0.0043 ns | 0.0041 ns | +| **CompareArray** | **1** | **0** | **26.046 ns** | **0.0158 ns** | **0.0147 ns** | +| CompareSpan | 1 | 0 | 20.513 ns | 0.0261 ns | 0.0244 ns | +| Compare | 1 | 0 | 2.759 ns | 0.0070 ns | 0.0062 ns | +| CompareFast | 1 | 0 | 1.378 ns | 0.0056 ns | 0.0052 ns | +| **CompareArray** | **1** | **1** | **30.631 ns** | **0.0199 ns** | **0.0176 ns** | +| CompareSpan | 1 | 1 | 21.913 ns | 0.0213 ns | 0.0166 ns | +| Compare | 1 | 1 | 2.755 ns | 0.0034 ns | 0.0031 ns | +| CompareFast | 1 | 1 | 1.375 ns | 0.0038 ns | 0.0036 ns | +| **CompareArray** | **1** | **2** | **31.439 ns** | **0.1093 ns** | **0.0969 ns** | +| CompareSpan | 1 | 2 | 24.551 ns | 0.0190 ns | 0.0178 ns | +| Compare | 1 | 2 | 2.746 ns | 0.0012 ns | 0.0011 ns | +| CompareFast | 1 | 2 | 1.384 ns | 0.0063 ns | 0.0059 ns | +| **CompareArray** | **1** | **3** | **33.702 ns** | **0.1124 ns** | **0.1051 ns** | +| CompareSpan | 1 | 3 | 26.459 ns | 0.0392 ns | 0.0347 ns | +| Compare | 1 | 3 | 2.757 ns | 0.0093 ns | 0.0087 ns | +| CompareFast | 1 | 3 | 1.380 ns | 0.0037 ns | 0.0035 ns | +| **CompareArray** | **1** | **4** | **36.806 ns** | **0.1277 ns** | **0.1132 ns** | +| CompareSpan | 1 | 4 | 28.244 ns | 0.0401 ns | 0.0375 ns | +| Compare | 1 | 4 | 2.759 ns | 0.0048 ns | 0.0043 ns | +| CompareFast | 1 | 4 | 1.378 ns | 0.0046 ns | 0.0043 ns | +| **CompareArray** | **2** | **0** | **28.709 ns** | **0.0813 ns** | **0.0760 ns** | +| CompareSpan | 2 | 0 | 22.748 ns | 0.0941 ns | 0.0880 ns | +| Compare | 2 | 0 | 2.268 ns | 0.0012 ns | 0.0011 ns | +| CompareFast | 2 | 0 | 1.376 ns | 0.0055 ns | 0.0051 ns | +| **CompareArray** | **2** | **1** | **31.359 ns** | **0.0633 ns** | **0.0592 ns** | +| CompareSpan | 2 | 1 | 24.513 ns | 0.0155 ns | 0.0138 ns | +| Compare | 2 | 1 | 2.263 ns | 0.0043 ns | 0.0040 ns | +| CompareFast | 2 | 1 | 1.387 ns | 0.0030 ns | 0.0028 ns | +| **CompareArray** | **2** | **2** | **33.790 ns** | **0.0864 ns** | **0.0808 ns** | +| CompareSpan | 2 | 2 | 26.476 ns | 0.0256 ns | 0.0239 ns | +| Compare | 2 | 2 | 2.275 ns | 0.0038 ns | 0.0032 ns | +| CompareFast | 2 | 2 | 1.384 ns | 0.0061 ns | 0.0054 ns | +| **CompareArray** | **2** | **3** | **36.624 ns** | **0.0644 ns** | **0.0603 ns** | +| CompareSpan | 2 | 3 | 28.462 ns | 0.0400 ns | 0.0374 ns | +| Compare | 2 | 3 | 2.277 ns | 0.0034 ns | 0.0028 ns | +| CompareFast | 2 | 3 | 1.391 ns | 0.0046 ns | 0.0041 ns | +| **CompareArray** | **2** | **4** | **39.548 ns** | **0.1309 ns** | **0.1160 ns** | +| CompareSpan | 2 | 4 | 30.363 ns | 0.0373 ns | 0.0349 ns | +| Compare | 2 | 4 | 2.263 ns | 0.0013 ns | 0.0013 ns | +| CompareFast | 2 | 4 | 1.379 ns | 0.0057 ns | 0.0051 ns | +| **CompareArray** | **3** | **0** | **33.186 ns** | **0.0194 ns** | **0.0181 ns** | +| CompareSpan | 3 | 0 | 24.597 ns | 0.0332 ns | 0.0294 ns | +| Compare | 3 | 0 | 1.738 ns | 0.0023 ns | 0.0019 ns | +| CompareFast | 3 | 0 | 1.377 ns | 0.0050 ns | 0.0046 ns | +| **CompareArray** | **3** | **1** | **37.322 ns** | **0.0225 ns** | **0.0210 ns** | +| CompareSpan | 3 | 1 | 26.243 ns | 0.0258 ns | 0.0241 ns | +| Compare | 3 | 1 | 1.740 ns | 0.0017 ns | 0.0016 ns | +| CompareFast | 3 | 1 | 1.378 ns | 0.0035 ns | 0.0033 ns | +| **CompareArray** | **3** | **2** | **37.104 ns** | **0.1544 ns** | **0.1444 ns** | +| CompareSpan | 3 | 2 | 28.499 ns | 0.0543 ns | 0.0454 ns | +| Compare | 3 | 2 | 1.743 ns | 0.0012 ns | 0.0011 ns | +| CompareFast | 3 | 2 | 1.378 ns | 0.0040 ns | 0.0036 ns | +| **CompareArray** | **3** | **3** | **39.548 ns** | **0.1680 ns** | **0.1490 ns** | +| CompareSpan | 3 | 3 | 29.818 ns | 0.0607 ns | 0.0538 ns | +| Compare | 3 | 3 | 1.740 ns | 0.0012 ns | 0.0011 ns | +| CompareFast | 3 | 3 | 1.383 ns | 0.0120 ns | 0.0112 ns | +| **CompareArray** | **3** | **4** | **42.576 ns** | **0.1619 ns** | **0.1515 ns** | +| CompareSpan | 3 | 4 | 32.165 ns | 0.0442 ns | 0.0414 ns | +| Compare | 3 | 4 | 1.741 ns | 0.0009 ns | 0.0008 ns | +| CompareFast | 3 | 4 | 1.380 ns | 0.0043 ns | 0.0038 ns | +| **CompareArray** | **4** | **0** | **34.480 ns** | **0.0583 ns** | **0.0545 ns** | +| CompareSpan | 4 | 0 | 26.550 ns | 0.0132 ns | 0.0111 ns | +| Compare | 4 | 0 | 1.477 ns | 0.0021 ns | 0.0018 ns | +| CompareFast | 4 | 0 | 1.379 ns | 0.0035 ns | 0.0033 ns | +| **CompareArray** | **4** | **1** | **41.002 ns** | **0.0885 ns** | **0.0784 ns** | +| CompareSpan | 4 | 1 | 28.449 ns | 0.0490 ns | 0.0458 ns | +| Compare | 4 | 1 | 1.474 ns | 0.0017 ns | 0.0015 ns | +| CompareFast | 4 | 1 | 1.379 ns | 0.0026 ns | 0.0023 ns | +| **CompareArray** | **4** | **2** | **39.862 ns** | **0.2128 ns** | **0.1990 ns** | +| CompareSpan | 4 | 2 | 30.517 ns | 0.0623 ns | 0.0583 ns | +| Compare | 4 | 2 | 1.482 ns | 0.0064 ns | 0.0057 ns | +| CompareFast | 4 | 2 | 1.379 ns | 0.0035 ns | 0.0033 ns | +| **CompareArray** | **4** | **3** | **42.669 ns** | **0.0942 ns** | **0.0881 ns** | +| CompareSpan | 4 | 3 | 32.171 ns | 0.0401 ns | 0.0375 ns | +| Compare | 4 | 3 | 1.484 ns | 0.0126 ns | 0.0118 ns | +| CompareFast | 4 | 3 | 1.376 ns | 0.0032 ns | 0.0030 ns | +| **CompareArray** | **4** | **4** | **44.850 ns** | **0.1694 ns** | **0.1585 ns** | +| CompareSpan | 4 | 4 | 33.664 ns | 0.0137 ns | 0.0121 ns | +| Compare | 4 | 4 | 1.473 ns | 0.0014 ns | 0.0012 ns | +| CompareFast | 4 | 4 | 1.379 ns | 0.0055 ns | 0.0051 ns | diff --git a/benchmarks.csproj b/scorecompare/scorecompare.csproj similarity index 100% rename from benchmarks.csproj rename to scorecompare/scorecompare.csproj