Skip to content

Instantly share code, notes, and snippets.

@ZodmanPerth
Last active August 28, 2021 09:56
Show Gist options
  • Save ZodmanPerth/00c3360d9d047d0d426a1c1874194b74 to your computer and use it in GitHub Desktop.
Save ZodmanPerth/00c3360d9d047d0d426a1c1874194b74 to your computer and use it in GitHub Desktop.
k-combination Algorithms of Rank and Unrank for Computer Programmers. Blog post at http://www.redperegrine.net/2021/04/10/software-algorithms-for-k-combinations/
namespace System
{
/// <summary>Mathematical functions for binomials</summary>
public static class Binomials
{
// / \
// | n | from n
// | |
// | k | choose k
// \ /
// Kudos: https://en.wikipedia.org/wiki/Combination#Example_of_counting_combinations
/// <summary>Calculates the Binomial Coefficient (n choose k), which is the number of unique k-sized combinations in a set of n elements.</summary>
/// <remarks>We divide before multiplying to minimise the chance of overflow.</remarks>
public static int CalculateBinomialCoefficient(int n, int k)
{
if (k > n)
return 0;
if (k == n)
return 1;
double result = n; // n choose 1
for (double i = 1; i < k; i++)
{
var numerator = n - i;
double factor = numerator / (i + 1);
result *= factor;
}
return (int)result;
}
//// Extensions
/// <summary>Returns the number (n) choose k</summary>
public static int Choose(this int n, int k) =>
CalculateBinomialCoefficient(n, k);
/// <summary>Calculates the number of unique combinations of size k from n numbers (k-combination)</summary>
public static int CountUniqueCombinationsOfSize(this int n, int k) =>
CalculateBinomialCoefficient(n, k);
}
}
using System;
namespace LG.App.Services.Combinations
{
/// <summary>A 1-based Combinatorial Number System of n numbers with unique k-combinations.</summary>
/// <remarks>The code here is not optimised for easier Mathematical comprehension. Use <see cref="FastCombinatorialNumberSystem"/> instead.</remarks>
public class CombinatorialNumberSystem : ICombinatorialNumberSystem
{
readonly int n, k;
readonly int _dualOfZero; // dual of the number 0 in a zero based system
/// <summary>Creates a combinatorial number system with unique k-combinations chosen from n items</summary>
public CombinatorialNumberSystem(int n, int k)
{
if (n <= 0) throw new ArgumentOutOfRangeException(nameof(n));
if (k <= 0) throw new ArgumentOutOfRangeException(nameof(k));
this.n = n;
this.k = k;
_dualOfZero = n - 1;
}
/// <summary>Returns the rank of the provided k-combination</summary>
public int Rank(int[] combination)
{
var result = new int[k];
combination.CopyTo(result, 0);
var dualOfCombinadic = 0;
var reducingK = k;
for (int i = 0; i < k; i++)
{
// Take 1 (for base 0)
result[i] -= 1;
// Map to combinadic
result[i] = _dualOfZero - result[i];
// Calculate dual of combinadic (by accumulation)
dualOfCombinadic += result[i].Choose(reducingK);
reducingK--;
}
// Calculate the dual
var dual = n.Choose(k) - 1 - dualOfCombinadic;
// Add 1 (for base 1)
dual++;
return dual;
}
/// <summary>Returns the k-combination with the provided rank</summary>
public int[] Unrank(int rank)
{
// Move to base 0
rank--;
// Calculate the dual
var dual = n.Choose(k) - 1 - rank;
// Calculate combinadic of the dual
var combination = CalculateCombinadic(dual);
for (int i = 0; i < k; i++)
{
// Map to zero-based combination
combination[i] = _dualOfZero - combination[i];
// Add 1 (for base 1)
combination[i] += 1;
}
return combination;
/// Local Functions
/// <summary>Calculates zero-based array of c such that maxRank = (c1 choose k-1) + (c2 choose k-2) + ... (c[of k-1] choose 1) </summary>
int[] CalculateCombinadic(int maxRank)
{
var result = new int[k];
var diminishingRank = maxRank;
var reducingK = k;
for (int i = 0; i < k; i++)
{
result[i] = CalculateLargestRankBelowThreshold(n, reducingK, diminishingRank);
diminishingRank -= result[i].Choose(reducingK);
reducingK--;
}
return result;
}
/// <summary>Returns the highest rank of n choose k that is less than max</summary>
int CalculateLargestRankBelowThreshold(int n, int k, int threshold)
{
int i = n - 1;
while (i.Choose(k) > threshold)
i--;
return i;
}
}
}
}
using System;
namespace LG.App.Services.Combinations
{
/// <summary>A 1-based Combinatorial Number System of n numbers with unique k-combinations.</summary>
/// <remarks>The code here is optimised for use. Mathematical comprehension is obscured by the optimisations.</remarks>
public class FastCombinatorialNumberSystem : ICombinatorialNumberSystem
{
readonly int n, k;
readonly int _dualOfZero; // dual of the number 0 in a zero based system
/// <summary>Creates a combinatorial number system with unique k-combinations chosen from n items</summary>
public FastCombinatorialNumberSystem(int n, int k)
{
if (n <= 0) throw new ArgumentOutOfRangeException(nameof(n));
if (k <= 0) throw new ArgumentOutOfRangeException(nameof(k));
this.n = n;
this.k = k;
_dualOfZero = n - 1;
}
public int Rank(int[] combination)
{
int ci;
var dual = n.Choose(k); // Add 1 (for base 1)
var reducingK = k;
for (int i = 0; i < k; i++)
{
// Map to combinadic and take 1 (for base 0)
ci = _dualOfZero - combination[i] + 1; // removed brackets, turning - to +
// Remove ci portion of the dualOfCombinadic from dual (diminish)
dual -= ci.Choose(reducingK);
reducingK--;
}
return dual;
}
public int[] Unrank(int rank)
{
// Calculate the dual (moving to zero based)
var dual = n.Choose(k) - rank;
var combination = new int[k];
var diminishingRank = dual;
var reducingK = k;
for (int i = 0; i < k; i++)
{
// Calculate ci of the combinadic of the dual
var ci = CalculateLargestRankBelowThreshold(n, reducingK, diminishingRank);
diminishingRank -= ci.Choose(reducingK);
reducingK--;
// Map to zero-based combination and add 1 (for base 1)
combination[i] = _dualOfZero - ci + 1;
}
return combination;
}
/// Local Functions
/// <summary>Returns the highest rank of n choose k that is less than max</summary>
int CalculateLargestRankBelowThreshold(int n, int k, int threshold)
{
int i = n - 1;
while (i.Choose(k) > threshold)
i--;
return i;
}
}
}
using BenchmarkDotNet.Running;
using PerformanceTests.CombinatorialNumberSystems;
namespace LG.Benchmark.Tests
{
public class Program
{
// NOTE:
// This follows the strategy for testing with BenchmarkDotNet laid down by Adam Sitnik here:
// https://github.com/dotnet/BenchmarkDotNet/issues/1460#issuecomment-646531625
//
// Build in release mode.
// Run from command line from within the project test folder with:
// dotnet run -c Release
public static void Main(string[] args)
{
//var summary = BenchmarkRunner.Run(typeof(RankTests));
var summary = BenchmarkRunner.Run(typeof(UnRankTests));
}
}
}
using BenchmarkDotNet.Attributes;
using LG.App.Services.Combinations;
using System.Collections.Generic;
namespace PerformanceTests.CombinatorialNumberSystems
{
[MemoryDiagnoser]
public class RankTests
{
/// <summary>Test data for benchmark tests. The first digit is N, the second is K.</summary>
public IEnumerable<object[]> KCombinations()
{
yield return new object[] { 5, 3, new[] { 1, 3, 5 } };
yield return new object[] { 45, 6, new[] { 11, 16, 23, 34, 42, 43 } };
yield return new object[] { 100, 6, new [] { 11, 16, 23, 34, 42, 43 } };
}
[Benchmark(Baseline = true)]
[ArgumentsSource(nameof(KCombinations))]
public int Rank(int n, int k, int[] kCombination)
{
var cns = new CombinatorialNumberSystem(n, k);
return cns.Rank(kCombination);
}
[Benchmark]
[ArgumentsSource(nameof(KCombinations))]
public int FastRank(int n, int k, int[] kCombination)
{
var fastCns = new FastCombinatorialNumberSystem(n, k);
return fastCns.Rank(kCombination);
}
}
}
// Validating benchmarks:
// ***** BenchmarkRunner: Start *****
// ***** Found 6 benchmark(s) in total *****
// ***** Building 1 exe(s) in Parallel: Start *****
// start dotnet restore /p:UseSharedCompilation=false /p:BuildInParallel=false /m:1 in C:\dev\LottoGenerator\LG.Tests.BenchmarkDotNet\bin\Release\netcoreapp3.1\45ee11c8-1f85-49bd-9a64-9c03db6b4199
// command took 1.51s and exited with 0
// start dotnet build -c Release --no-restore /p:UseSharedCompilation=false /p:BuildInParallel=false /m:1 in C:\dev\LottoGenerator\LG.Tests.BenchmarkDotNet\bin\Release\netcoreapp3.1\45ee11c8-1f85-49bd-9a64-9c03db6b4199
// command took 2.77s and exited with 0
// ***** Done, took 00:00:04 (4.43 sec) *****
// Found 6 benchmarks:
// RankTests.Rank: DefaultJob [n=5, k=3, kCombination=Int32[3]]
// RankTests.FastRank: DefaultJob [n=5, k=3, kCombination=Int32[3]]
// RankTests.Rank: DefaultJob [n=45, k=6, kCombination=Int32[6]]
// RankTests.FastRank: DefaultJob [n=45, k=6, kCombination=Int32[6]]
// RankTests.Rank: DefaultJob [n=100, k=6, kCombination=Int32[6]]
// RankTests.FastRank: DefaultJob [n=100, k=6, kCombination=Int32[6]]
// **************************
// Benchmark: RankTests.Rank: DefaultJob [n=5, k=3, kCombination=Int32[3]]
// *** Execute ***
// Launch: 1 / 1
// Execute: dotnet "45ee11c8-1f85-49bd-9a64-9c03db6b4199.dll" --benchmarkName "PerformanceTests.CombinatorialNumberSystems.RankTests.Rank(n: 5, k: 3, kCombination: [1, 3, 5])" --job "Default" --benchmarkId 0 in C:\dev\LottoGenerator\LG.Tests.BenchmarkDotNet\bin\Release\netcoreapp3.1\45ee11c8-1f85-49bd-9a64-9c03db6b4199\bin\Release\netcoreapp3.1
// BeforeAnythingElse
// Benchmark Process Environment Information:
// Runtime=.NET Core 3.1.13 (CoreCLR 4.700.21.11102, CoreFX 4.700.21.11602), X64 RyuJIT
// GC=Concurrent Workstation
// Job: DefaultJob
OverheadJitting 1: 1 op, 359500.00 ns, 359.5000 us/op
WorkloadJitting 1: 1 op, 29977200.00 ns, 29.9772 ms/op
OverheadJitting 2: 16 op, 581300.00 ns, 36.3312 us/op
WorkloadJitting 2: 16 op, 619300.00 ns, 38.7062 us/op
WorkloadPilot 1: 16 op, 4200.00 ns, 262.5000 ns/op
WorkloadPilot 2: 32 op, 3000.00 ns, 93.7500 ns/op
WorkloadPilot 3: 64 op, 6300.00 ns, 98.4375 ns/op
WorkloadPilot 4: 128 op, 7600.00 ns, 59.3750 ns/op
WorkloadPilot 5: 256 op, 15200.00 ns, 59.3750 ns/op
WorkloadPilot 6: 512 op, 24100.00 ns, 47.0703 ns/op
WorkloadPilot 7: 1024 op, 47900.00 ns, 46.7773 ns/op
WorkloadPilot 8: 2048 op, 150000.00 ns, 73.2422 ns/op
WorkloadPilot 9: 4096 op, 215300.00 ns, 52.5635 ns/op
WorkloadPilot 10: 8192 op, 718800.00 ns, 87.7441 ns/op
WorkloadPilot 11: 16384 op, 1013700.00 ns, 61.8713 ns/op
WorkloadPilot 12: 32768 op, 1761700.00 ns, 53.7628 ns/op
WorkloadPilot 13: 65536 op, 3280500.00 ns, 50.0565 ns/op
WorkloadPilot 14: 131072 op, 5873900.00 ns, 44.8143 ns/op
WorkloadPilot 15: 262144 op, 13745300.00 ns, 52.4342 ns/op
WorkloadPilot 16: 524288 op, 25320600.00 ns, 48.2952 ns/op
WorkloadPilot 17: 1048576 op, 47340900.00 ns, 45.1478 ns/op
WorkloadPilot 18: 2097152 op, 90106400.00 ns, 42.9661 ns/op
WorkloadPilot 19: 4194304 op, 179071800.00 ns, 42.6940 ns/op
WorkloadPilot 20: 8388608 op, 372032300.00 ns, 44.3497 ns/op
WorkloadPilot 21: 16777216 op, 900635400.00 ns, 53.6821 ns/op
OverheadWarmup 1: 16777216 op, 25704900.00 ns, 1.5321 ns/op
OverheadWarmup 2: 16777216 op, 26161200.00 ns, 1.5593 ns/op
OverheadWarmup 3: 16777216 op, 28979500.00 ns, 1.7273 ns/op
OverheadWarmup 4: 16777216 op, 27775600.00 ns, 1.6556 ns/op
OverheadWarmup 5: 16777216 op, 29727700.00 ns, 1.7719 ns/op
OverheadWarmup 6: 16777216 op, 26732600.00 ns, 1.5934 ns/op
OverheadActual 1: 16777216 op, 26207100.00 ns, 1.5621 ns/op
OverheadActual 2: 16777216 op, 26282800.00 ns, 1.5666 ns/op
OverheadActual 3: 16777216 op, 25955500.00 ns, 1.5471 ns/op
OverheadActual 4: 16777216 op, 25903600.00 ns, 1.5440 ns/op
OverheadActual 5: 16777216 op, 26371000.00 ns, 1.5718 ns/op
OverheadActual 6: 16777216 op, 26468300.00 ns, 1.5776 ns/op
OverheadActual 7: 16777216 op, 27542000.00 ns, 1.6416 ns/op
OverheadActual 8: 16777216 op, 25952100.00 ns, 1.5469 ns/op
OverheadActual 9: 16777216 op, 26256400.00 ns, 1.5650 ns/op
OverheadActual 10: 16777216 op, 25233500.00 ns, 1.5040 ns/op
OverheadActual 11: 16777216 op, 24694200.00 ns, 1.4719 ns/op
OverheadActual 12: 16777216 op, 24665000.00 ns, 1.4701 ns/op
OverheadActual 13: 16777216 op, 24663300.00 ns, 1.4700 ns/op
OverheadActual 14: 16777216 op, 24885600.00 ns, 1.4833 ns/op
OverheadActual 15: 16777216 op, 24642000.00 ns, 1.4688 ns/op
WorkloadWarmup 1: 16777216 op, 853363800.00 ns, 50.8644 ns/op
WorkloadWarmup 2: 16777216 op, 774132000.00 ns, 46.1419 ns/op
WorkloadWarmup 3: 16777216 op, 750326100.00 ns, 44.7229 ns/op
WorkloadWarmup 4: 16777216 op, 789840400.00 ns, 47.0782 ns/op
WorkloadWarmup 5: 16777216 op, 809206300.00 ns, 48.2325 ns/op
WorkloadWarmup 6: 16777216 op, 813731000.00 ns, 48.5021 ns/op
WorkloadWarmup 7: 16777216 op, 752967600.00 ns, 44.8804 ns/op
WorkloadWarmup 8: 16777216 op, 760466600.00 ns, 45.3273 ns/op
WorkloadWarmup 9: 16777216 op, 807914100.00 ns, 48.1554 ns/op
WorkloadWarmup 10: 16777216 op, 795426500.00 ns, 47.4111 ns/op
// BeforeActualRun
WorkloadActual 1: 16777216 op, 778219500.00 ns, 46.3855 ns/op
WorkloadActual 2: 16777216 op, 789751500.00 ns, 47.0729 ns/op
WorkloadActual 3: 16777216 op, 793805500.00 ns, 47.3145 ns/op
WorkloadActual 4: 16777216 op, 820612100.00 ns, 48.9123 ns/op
WorkloadActual 5: 16777216 op, 820951800.00 ns, 48.9325 ns/op
WorkloadActual 6: 16777216 op, 775191800.00 ns, 46.2050 ns/op
WorkloadActual 7: 16777216 op, 781625800.00 ns, 46.5885 ns/op
WorkloadActual 8: 16777216 op, 926022300.00 ns, 55.1952 ns/op
WorkloadActual 9: 16777216 op, 854515700.00 ns, 50.9331 ns/op
WorkloadActual 10: 16777216 op, 767548300.00 ns, 45.7494 ns/op
WorkloadActual 11: 16777216 op, 801714900.00 ns, 47.7859 ns/op
WorkloadActual 12: 16777216 op, 813421300.00 ns, 48.4837 ns/op
WorkloadActual 13: 16777216 op, 808318200.00 ns, 48.1795 ns/op
WorkloadActual 14: 16777216 op, 797864100.00 ns, 47.5564 ns/op
WorkloadActual 15: 16777216 op, 865791600.00 ns, 51.6052 ns/op
WorkloadActual 16: 16777216 op, 889952700.00 ns, 53.0453 ns/op
WorkloadActual 17: 16777216 op, 689972200.00 ns, 41.1255 ns/op
WorkloadActual 18: 16777216 op, 812475900.00 ns, 48.4273 ns/op
WorkloadActual 19: 16777216 op, 900046000.00 ns, 53.6469 ns/op
WorkloadActual 20: 16777216 op, 840246500.00 ns, 50.0826 ns/op
WorkloadActual 21: 16777216 op, 879475500.00 ns, 52.4208 ns/op
WorkloadActual 22: 16777216 op, 915068400.00 ns, 54.5423 ns/op
WorkloadActual 23: 16777216 op, 802148100.00 ns, 47.8118 ns/op
WorkloadActual 24: 16777216 op, 902090300.00 ns, 53.7688 ns/op
WorkloadActual 25: 16777216 op, 898992900.00 ns, 53.5842 ns/op
WorkloadActual 26: 16777216 op, 844163900.00 ns, 50.3161 ns/op
WorkloadActual 27: 16777216 op, 933666300.00 ns, 55.6508 ns/op
WorkloadActual 28: 16777216 op, 814692300.00 ns, 48.5594 ns/op
WorkloadActual 29: 16777216 op, 892906700.00 ns, 53.2214 ns/op
WorkloadActual 30: 16777216 op, 818184400.00 ns, 48.7676 ns/op
WorkloadActual 31: 16777216 op, 905881500.00 ns, 53.9947 ns/op
WorkloadActual 32: 16777216 op, 908779800.00 ns, 54.1675 ns/op
WorkloadActual 33: 16777216 op, 828319500.00 ns, 49.3717 ns/op
WorkloadActual 34: 16777216 op, 962952800.00 ns, 57.3965 ns/op
WorkloadActual 35: 16777216 op, 831284800.00 ns, 49.5484 ns/op
WorkloadActual 36: 16777216 op, 894617300.00 ns, 53.3233 ns/op
WorkloadActual 37: 16777216 op, 758506400.00 ns, 45.2105 ns/op
WorkloadActual 38: 16777216 op, 785929100.00 ns, 46.8450 ns/op
WorkloadActual 39: 16777216 op, 847244600.00 ns, 50.4997 ns/op
WorkloadActual 40: 16777216 op, 870154500.00 ns, 51.8652 ns/op
WorkloadActual 41: 16777216 op, 906838000.00 ns, 54.0518 ns/op
WorkloadActual 42: 16777216 op, 817676400.00 ns, 48.7373 ns/op
WorkloadActual 43: 16777216 op, 907891300.00 ns, 54.1145 ns/op
WorkloadActual 44: 16777216 op, 847061600.00 ns, 50.4888 ns/op
WorkloadActual 45: 16777216 op, 888025100.00 ns, 52.9304 ns/op
WorkloadActual 46: 16777216 op, 897891500.00 ns, 53.5185 ns/op
WorkloadActual 47: 16777216 op, 908574600.00 ns, 54.1553 ns/op
WorkloadActual 48: 16777216 op, 954311500.00 ns, 56.8814 ns/op
WorkloadActual 49: 16777216 op, 819406800.00 ns, 48.8405 ns/op
WorkloadActual 50: 16777216 op, 789095100.00 ns, 47.0337 ns/op
WorkloadActual 51: 16777216 op, 837864400.00 ns, 49.9406 ns/op
WorkloadActual 52: 16777216 op, 785091800.00 ns, 46.7951 ns/op
WorkloadActual 53: 16777216 op, 813273900.00 ns, 48.4749 ns/op
WorkloadActual 54: 16777216 op, 805778200.00 ns, 48.0281 ns/op
WorkloadActual 55: 16777216 op, 809151700.00 ns, 48.2292 ns/op
WorkloadActual 56: 16777216 op, 796818700.00 ns, 47.4941 ns/op
WorkloadActual 57: 16777216 op, 804823600.00 ns, 47.9712 ns/op
WorkloadActual 58: 16777216 op, 855697100.00 ns, 51.0035 ns/op
WorkloadActual 59: 16777216 op, 924716500.00 ns, 55.1174 ns/op
WorkloadActual 60: 16777216 op, 796982900.00 ns, 47.5039 ns/op
WorkloadActual 61: 16777216 op, 832603100.00 ns, 49.6270 ns/op
WorkloadActual 62: 16777216 op, 917377100.00 ns, 54.6799 ns/op
WorkloadActual 63: 16777216 op, 825110800.00 ns, 49.1804 ns/op
WorkloadActual 64: 16777216 op, 931796900.00 ns, 55.5394 ns/op
WorkloadActual 65: 16777216 op, 832644300.00 ns, 49.6295 ns/op
WorkloadActual 66: 16777216 op, 925762000.00 ns, 55.1797 ns/op
WorkloadActual 67: 16777216 op, 933367000.00 ns, 55.6330 ns/op
WorkloadActual 68: 16777216 op, 796601300.00 ns, 47.4811 ns/op
WorkloadActual 69: 16777216 op, 817527100.00 ns, 48.7284 ns/op
WorkloadActual 70: 16777216 op, 957263600.00 ns, 57.0574 ns/op
WorkloadActual 71: 16777216 op, 936657100.00 ns, 55.8291 ns/op
WorkloadActual 72: 16777216 op, 791109100.00 ns, 47.1538 ns/op
WorkloadActual 73: 16777216 op, 814624000.00 ns, 48.5554 ns/op
WorkloadActual 74: 16777216 op, 835830300.00 ns, 49.8194 ns/op
WorkloadActual 75: 16777216 op, 817766900.00 ns, 48.7427 ns/op
WorkloadActual 76: 16777216 op, 928996800.00 ns, 55.3725 ns/op
WorkloadActual 77: 16777216 op, 839081400.00 ns, 50.0131 ns/op
WorkloadActual 78: 16777216 op, 820012800.00 ns, 48.8766 ns/op
WorkloadActual 79: 16777216 op, 917204800.00 ns, 54.6697 ns/op
WorkloadActual 80: 16777216 op, 834102900.00 ns, 49.7164 ns/op
WorkloadActual 81: 16777216 op, 800008400.00 ns, 47.6842 ns/op
WorkloadActual 82: 16777216 op, 826155800.00 ns, 49.2427 ns/op
WorkloadActual 83: 16777216 op, 833367800.00 ns, 49.6726 ns/op
WorkloadActual 84: 16777216 op, 806756800.00 ns, 48.0865 ns/op
WorkloadActual 85: 16777216 op, 807024500.00 ns, 48.1024 ns/op
WorkloadActual 86: 16777216 op, 729347400.00 ns, 43.4725 ns/op
WorkloadActual 87: 16777216 op, 761714100.00 ns, 45.4017 ns/op
WorkloadActual 88: 16777216 op, 732710100.00 ns, 43.6729 ns/op
WorkloadActual 89: 16777216 op, 784270900.00 ns, 46.7462 ns/op
WorkloadActual 90: 16777216 op, 879606200.00 ns, 52.4286 ns/op
WorkloadActual 91: 16777216 op, 928442100.00 ns, 55.3395 ns/op
WorkloadActual 92: 16777216 op, 826588000.00 ns, 49.2685 ns/op
WorkloadActual 93: 16777216 op, 820259600.00 ns, 48.8913 ns/op
WorkloadActual 94: 16777216 op, 776572200.00 ns, 46.2873 ns/op
WorkloadActual 95: 16777216 op, 904104600.00 ns, 53.8888 ns/op
WorkloadActual 96: 16777216 op, 778680400.00 ns, 46.4130 ns/op
WorkloadActual 97: 16777216 op, 836511500.00 ns, 49.8600 ns/op
WorkloadActual 98: 16777216 op, 806497400.00 ns, 48.0710 ns/op
WorkloadActual 99: 16777216 op, 797599100.00 ns, 47.5406 ns/op
WorkloadActual 100: 16777216 op, 814942900.00 ns, 48.5744 ns/op
// AfterActualRun
WorkloadResult 1: 16777216 op, 752267400.00 ns, 44.8386 ns/op
WorkloadResult 2: 16777216 op, 763799400.00 ns, 45.5260 ns/op
WorkloadResult 3: 16777216 op, 767853400.00 ns, 45.7676 ns/op
WorkloadResult 4: 16777216 op, 794660000.00 ns, 47.3654 ns/op
WorkloadResult 5: 16777216 op, 794999700.00 ns, 47.3857 ns/op
WorkloadResult 6: 16777216 op, 749239700.00 ns, 44.6582 ns/op
WorkloadResult 7: 16777216 op, 755673700.00 ns, 45.0417 ns/op
WorkloadResult 8: 16777216 op, 900070200.00 ns, 53.6484 ns/op
WorkloadResult 9: 16777216 op, 828563600.00 ns, 49.3862 ns/op
WorkloadResult 10: 16777216 op, 741596200.00 ns, 44.2026 ns/op
WorkloadResult 11: 16777216 op, 775762800.00 ns, 46.2391 ns/op
WorkloadResult 12: 16777216 op, 787469200.00 ns, 46.9368 ns/op
WorkloadResult 13: 16777216 op, 782366100.00 ns, 46.6327 ns/op
WorkloadResult 14: 16777216 op, 771912000.00 ns, 46.0095 ns/op
WorkloadResult 15: 16777216 op, 839839500.00 ns, 50.0583 ns/op
WorkloadResult 16: 16777216 op, 864000600.00 ns, 51.4984 ns/op
WorkloadResult 17: 16777216 op, 664020100.00 ns, 39.5787 ns/op
WorkloadResult 18: 16777216 op, 786523800.00 ns, 46.8805 ns/op
WorkloadResult 19: 16777216 op, 874093900.00 ns, 52.1001 ns/op
WorkloadResult 20: 16777216 op, 814294400.00 ns, 48.5357 ns/op
WorkloadResult 21: 16777216 op, 853523400.00 ns, 50.8740 ns/op
WorkloadResult 22: 16777216 op, 889116300.00 ns, 52.9955 ns/op
WorkloadResult 23: 16777216 op, 776196000.00 ns, 46.2649 ns/op
WorkloadResult 24: 16777216 op, 876138200.00 ns, 52.2219 ns/op
WorkloadResult 25: 16777216 op, 873040800.00 ns, 52.0373 ns/op
WorkloadResult 26: 16777216 op, 818211800.00 ns, 48.7692 ns/op
WorkloadResult 27: 16777216 op, 907714200.00 ns, 54.1040 ns/op
WorkloadResult 28: 16777216 op, 788740200.00 ns, 47.0126 ns/op
WorkloadResult 29: 16777216 op, 866954600.00 ns, 51.6745 ns/op
WorkloadResult 30: 16777216 op, 792232300.00 ns, 47.2207 ns/op
WorkloadResult 31: 16777216 op, 879929400.00 ns, 52.4479 ns/op
WorkloadResult 32: 16777216 op, 882827700.00 ns, 52.6206 ns/op
WorkloadResult 33: 16777216 op, 802367400.00 ns, 47.8248 ns/op
WorkloadResult 34: 16777216 op, 937000700.00 ns, 55.8496 ns/op
WorkloadResult 35: 16777216 op, 805332700.00 ns, 48.0016 ns/op
WorkloadResult 36: 16777216 op, 868665200.00 ns, 51.7765 ns/op
WorkloadResult 37: 16777216 op, 732554300.00 ns, 43.6636 ns/op
WorkloadResult 38: 16777216 op, 759977000.00 ns, 45.2982 ns/op
WorkloadResult 39: 16777216 op, 821292500.00 ns, 48.9528 ns/op
WorkloadResult 40: 16777216 op, 844202400.00 ns, 50.3184 ns/op
WorkloadResult 41: 16777216 op, 880885900.00 ns, 52.5049 ns/op
WorkloadResult 42: 16777216 op, 791724300.00 ns, 47.1904 ns/op
WorkloadResult 43: 16777216 op, 881939200.00 ns, 52.5677 ns/op
WorkloadResult 44: 16777216 op, 821109500.00 ns, 48.9419 ns/op
WorkloadResult 45: 16777216 op, 862073000.00 ns, 51.3836 ns/op
WorkloadResult 46: 16777216 op, 871939400.00 ns, 51.9716 ns/op
WorkloadResult 47: 16777216 op, 882622500.00 ns, 52.6084 ns/op
WorkloadResult 48: 16777216 op, 928359400.00 ns, 55.3345 ns/op
WorkloadResult 49: 16777216 op, 793454700.00 ns, 47.2936 ns/op
WorkloadResult 50: 16777216 op, 763143000.00 ns, 45.4869 ns/op
WorkloadResult 51: 16777216 op, 811912300.00 ns, 48.3937 ns/op
WorkloadResult 52: 16777216 op, 759139700.00 ns, 45.2483 ns/op
WorkloadResult 53: 16777216 op, 787321800.00 ns, 46.9280 ns/op
WorkloadResult 54: 16777216 op, 779826100.00 ns, 46.4813 ns/op
WorkloadResult 55: 16777216 op, 783199600.00 ns, 46.6823 ns/op
WorkloadResult 56: 16777216 op, 770866600.00 ns, 45.9472 ns/op
WorkloadResult 57: 16777216 op, 778871500.00 ns, 46.4244 ns/op
WorkloadResult 58: 16777216 op, 829745000.00 ns, 49.4567 ns/op
WorkloadResult 59: 16777216 op, 898764400.00 ns, 53.5705 ns/op
WorkloadResult 60: 16777216 op, 771030800.00 ns, 45.9570 ns/op
WorkloadResult 61: 16777216 op, 806651000.00 ns, 48.0801 ns/op
WorkloadResult 62: 16777216 op, 891425000.00 ns, 53.1331 ns/op
WorkloadResult 63: 16777216 op, 799158700.00 ns, 47.6336 ns/op
WorkloadResult 64: 16777216 op, 905844800.00 ns, 53.9926 ns/op
WorkloadResult 65: 16777216 op, 806692200.00 ns, 48.0826 ns/op
WorkloadResult 66: 16777216 op, 899809900.00 ns, 53.6328 ns/op
WorkloadResult 67: 16777216 op, 907414900.00 ns, 54.0861 ns/op
WorkloadResult 68: 16777216 op, 770649200.00 ns, 45.9343 ns/op
WorkloadResult 69: 16777216 op, 791575000.00 ns, 47.1815 ns/op
WorkloadResult 70: 16777216 op, 931311500.00 ns, 55.5105 ns/op
WorkloadResult 71: 16777216 op, 910705000.00 ns, 54.2822 ns/op
WorkloadResult 72: 16777216 op, 765157000.00 ns, 45.6069 ns/op
WorkloadResult 73: 16777216 op, 788671900.00 ns, 47.0085 ns/op
WorkloadResult 74: 16777216 op, 809878200.00 ns, 48.2725 ns/op
WorkloadResult 75: 16777216 op, 791814800.00 ns, 47.1958 ns/op
WorkloadResult 76: 16777216 op, 903044700.00 ns, 53.8257 ns/op
WorkloadResult 77: 16777216 op, 813129300.00 ns, 48.4663 ns/op
WorkloadResult 78: 16777216 op, 794060700.00 ns, 47.3297 ns/op
WorkloadResult 79: 16777216 op, 891252700.00 ns, 53.1228 ns/op
WorkloadResult 80: 16777216 op, 808150800.00 ns, 48.1695 ns/op
WorkloadResult 81: 16777216 op, 774056300.00 ns, 46.1374 ns/op
WorkloadResult 82: 16777216 op, 800203700.00 ns, 47.6959 ns/op
WorkloadResult 83: 16777216 op, 807415700.00 ns, 48.1257 ns/op
WorkloadResult 84: 16777216 op, 780804700.00 ns, 46.5396 ns/op
WorkloadResult 85: 16777216 op, 781072400.00 ns, 46.5555 ns/op
WorkloadResult 86: 16777216 op, 703395300.00 ns, 41.9256 ns/op
WorkloadResult 87: 16777216 op, 735762000.00 ns, 43.8548 ns/op
WorkloadResult 88: 16777216 op, 706758000.00 ns, 42.1261 ns/op
WorkloadResult 89: 16777216 op, 758318800.00 ns, 45.1993 ns/op
WorkloadResult 90: 16777216 op, 853654100.00 ns, 50.8817 ns/op
WorkloadResult 91: 16777216 op, 902490000.00 ns, 53.7926 ns/op
WorkloadResult 92: 16777216 op, 800635900.00 ns, 47.7216 ns/op
WorkloadResult 93: 16777216 op, 794307500.00 ns, 47.3444 ns/op
WorkloadResult 94: 16777216 op, 750620100.00 ns, 44.7404 ns/op
WorkloadResult 95: 16777216 op, 878152500.00 ns, 52.3420 ns/op
WorkloadResult 96: 16777216 op, 752728300.00 ns, 44.8661 ns/op
WorkloadResult 97: 16777216 op, 810559400.00 ns, 48.3131 ns/op
WorkloadResult 98: 16777216 op, 780545300.00 ns, 46.5241 ns/op
WorkloadResult 99: 16777216 op, 771647000.00 ns, 45.9937 ns/op
WorkloadResult 100: 16777216 op, 788990800.00 ns, 47.0275 ns/op
GC: 385 0 0 1207959552 16777216
Threading: 2 0 16777216
// AfterAll
// Benchmark Process 15964 has exited with code 0
Mean = 48.608 ns, StdErr = 0.340 ns (0.70%), N = 100, StdDev = 3.399 ns
Min = 39.579 ns, Q1 = 46.258 ns, Median = 47.709 ns, Q3 = 51.825 ns, Max = 55.850 ns
IQR = 5.567 ns, LowerFence = 37.908 ns, UpperFence = 60.176 ns
ConfidenceInterval = [47.456 ns; 49.761 ns] (CI 99.9%), Margin = 1.153 ns (2.37% of Mean)
Skewness = 0.23, Kurtosis = 2.39, MValue = 2.76
// **************************
// Benchmark: RankTests.FastRank: DefaultJob [n=5, k=3, kCombination=Int32[3]]
// *** Execute ***
// Launch: 1 / 1
// Execute: dotnet "45ee11c8-1f85-49bd-9a64-9c03db6b4199.dll" --benchmarkName "PerformanceTests.CombinatorialNumberSystems.RankTests.FastRank(n: 5, k: 3, kCombination: [1, 3, 5])" --job "Default" --benchmarkId 1 in C:\dev\LottoGenerator\LG.Tests.BenchmarkDotNet\bin\Release\netcoreapp3.1\45ee11c8-1f85-49bd-9a64-9c03db6b4199\bin\Release\netcoreapp3.1
// BeforeAnythingElse
// Benchmark Process Environment Information:
// Runtime=.NET Core 3.1.13 (CoreCLR 4.700.21.11102, CoreFX 4.700.21.11602), X64 RyuJIT
// GC=Concurrent Workstation
// Job: DefaultJob
OverheadJitting 1: 1 op, 365900.00 ns, 365.9000 us/op
WorkloadJitting 1: 1 op, 2035800.00 ns, 2.0358 ms/op
OverheadJitting 2: 16 op, 628800.00 ns, 39.3000 us/op
WorkloadJitting 2: 16 op, 559400.00 ns, 34.9625 us/op
WorkloadPilot 1: 16 op, 2200.00 ns, 137.5000 ns/op
WorkloadPilot 2: 32 op, 1700.00 ns, 53.1250 ns/op
WorkloadPilot 3: 64 op, 3800.00 ns, 59.3750 ns/op
WorkloadPilot 4: 128 op, 4000.00 ns, 31.2500 ns/op
WorkloadPilot 5: 256 op, 6200.00 ns, 24.2188 ns/op
WorkloadPilot 6: 512 op, 14700.00 ns, 28.7109 ns/op
WorkloadPilot 7: 1024 op, 20600.00 ns, 20.1172 ns/op
WorkloadPilot 8: 2048 op, 57900.00 ns, 28.2715 ns/op
WorkloadPilot 9: 4096 op, 83400.00 ns, 20.3613 ns/op
WorkloadPilot 10: 8192 op, 181200.00 ns, 22.1191 ns/op
WorkloadPilot 11: 16384 op, 419200.00 ns, 25.5859 ns/op
WorkloadPilot 12: 32768 op, 810300.00 ns, 24.7284 ns/op
WorkloadPilot 13: 65536 op, 1683100.00 ns, 25.6821 ns/op
WorkloadPilot 14: 131072 op, 3554700.00 ns, 27.1202 ns/op
WorkloadPilot 15: 262144 op, 5331900.00 ns, 20.3396 ns/op
WorkloadPilot 16: 524288 op, 11566500.00 ns, 22.0613 ns/op
WorkloadPilot 17: 1048576 op, 22087700.00 ns, 21.0645 ns/op
WorkloadPilot 18: 2097152 op, 45756900.00 ns, 21.8186 ns/op
WorkloadPilot 19: 4194304 op, 89551800.00 ns, 21.3508 ns/op
WorkloadPilot 20: 8388608 op, 170252500.00 ns, 20.2957 ns/op
WorkloadPilot 21: 16777216 op, 310219500.00 ns, 18.4905 ns/op
WorkloadPilot 22: 33554432 op, 575997100.00 ns, 17.1661 ns/op
OverheadWarmup 1: 33554432 op, 52900100.00 ns, 1.5765 ns/op
OverheadWarmup 2: 33554432 op, 52787100.00 ns, 1.5732 ns/op
OverheadWarmup 3: 33554432 op, 52814200.00 ns, 1.5740 ns/op
OverheadWarmup 4: 33554432 op, 53724800.00 ns, 1.6011 ns/op
OverheadWarmup 5: 33554432 op, 54546100.00 ns, 1.6256 ns/op
OverheadWarmup 6: 33554432 op, 54604800.00 ns, 1.6273 ns/op
OverheadWarmup 7: 33554432 op, 53298100.00 ns, 1.5884 ns/op
OverheadWarmup 8: 33554432 op, 53265800.00 ns, 1.5874 ns/op
OverheadWarmup 9: 33554432 op, 49444700.00 ns, 1.4736 ns/op
OverheadWarmup 10: 33554432 op, 49276100.00 ns, 1.4685 ns/op
OverheadActual 1: 33554432 op, 49671600.00 ns, 1.4803 ns/op
OverheadActual 2: 33554432 op, 51016800.00 ns, 1.5204 ns/op
OverheadActual 3: 33554432 op, 54896700.00 ns, 1.6360 ns/op
OverheadActual 4: 33554432 op, 49445500.00 ns, 1.4736 ns/op
OverheadActual 5: 33554432 op, 49245700.00 ns, 1.4676 ns/op
OverheadActual 6: 33554432 op, 49721000.00 ns, 1.4818 ns/op
OverheadActual 7: 33554432 op, 49695700.00 ns, 1.4810 ns/op
OverheadActual 8: 33554432 op, 49693900.00 ns, 1.4810 ns/op
OverheadActual 9: 33554432 op, 51226400.00 ns, 1.5267 ns/op
OverheadActual 10: 33554432 op, 50357000.00 ns, 1.5008 ns/op
OverheadActual 11: 33554432 op, 50116500.00 ns, 1.4936 ns/op
OverheadActual 12: 33554432 op, 50542900.00 ns, 1.5063 ns/op
OverheadActual 13: 33554432 op, 50081600.00 ns, 1.4925 ns/op
OverheadActual 14: 33554432 op, 49832500.00 ns, 1.4851 ns/op
OverheadActual 15: 33554432 op, 49560100.00 ns, 1.4770 ns/op
WorkloadWarmup 1: 33554432 op, 730855000.00 ns, 21.7812 ns/op
WorkloadWarmup 2: 33554432 op, 816760700.00 ns, 24.3414 ns/op
WorkloadWarmup 3: 33554432 op, 802366800.00 ns, 23.9124 ns/op
WorkloadWarmup 4: 33554432 op, 846206300.00 ns, 25.2189 ns/op
WorkloadWarmup 5: 33554432 op, 779210200.00 ns, 23.2223 ns/op
WorkloadWarmup 6: 33554432 op, 836038900.00 ns, 24.9159 ns/op
// BeforeActualRun
WorkloadActual 1: 33554432 op, 757416900.00 ns, 22.5728 ns/op
WorkloadActual 2: 33554432 op, 796364100.00 ns, 23.7335 ns/op
WorkloadActual 3: 33554432 op, 793785700.00 ns, 23.6567 ns/op
WorkloadActual 4: 33554432 op, 666255400.00 ns, 19.8560 ns/op
WorkloadActual 5: 33554432 op, 689996400.00 ns, 20.5635 ns/op
WorkloadActual 6: 33554432 op, 734401700.00 ns, 21.8869 ns/op
WorkloadActual 7: 33554432 op, 700027200.00 ns, 20.8624 ns/op
WorkloadActual 8: 33554432 op, 804099200.00 ns, 23.9640 ns/op
WorkloadActual 9: 33554432 op, 700630400.00 ns, 20.8804 ns/op
WorkloadActual 10: 33554432 op, 700338300.00 ns, 20.8717 ns/op
WorkloadActual 11: 33554432 op, 794159600.00 ns, 23.6678 ns/op
WorkloadActual 12: 33554432 op, 758528700.00 ns, 22.6059 ns/op
WorkloadActual 13: 33554432 op, 792178800.00 ns, 23.6088 ns/op
WorkloadActual 14: 33554432 op, 835741700.00 ns, 24.9070 ns/op
WorkloadActual 15: 33554432 op, 688571900.00 ns, 20.5210 ns/op
WorkloadActual 16: 33554432 op, 612100500.00 ns, 18.2420 ns/op
WorkloadActual 17: 33554432 op, 808121600.00 ns, 24.0839 ns/op
WorkloadActual 18: 33554432 op, 701229000.00 ns, 20.8983 ns/op
WorkloadActual 19: 33554432 op, 829096900.00 ns, 24.7090 ns/op
WorkloadActual 20: 33554432 op, 705358300.00 ns, 21.0213 ns/op
WorkloadActual 21: 33554432 op, 717223800.00 ns, 21.3749 ns/op
WorkloadActual 22: 33554432 op, 770272700.00 ns, 22.9559 ns/op
WorkloadActual 23: 33554432 op, 726778700.00 ns, 21.6597 ns/op
WorkloadActual 24: 33554432 op, 731964300.00 ns, 21.8142 ns/op
WorkloadActual 25: 33554432 op, 706824900.00 ns, 21.0650 ns/op
WorkloadActual 26: 33554432 op, 828505100.00 ns, 24.6914 ns/op
WorkloadActual 27: 33554432 op, 832379200.00 ns, 24.8068 ns/op
WorkloadActual 28: 33554432 op, 818018700.00 ns, 24.3789 ns/op
WorkloadActual 29: 33554432 op, 752261300.00 ns, 22.4191 ns/op
WorkloadActual 30: 33554432 op, 823374600.00 ns, 24.5385 ns/op
WorkloadActual 31: 33554432 op, 752350200.00 ns, 22.4218 ns/op
WorkloadActual 32: 33554432 op, 865295000.00 ns, 25.7878 ns/op
WorkloadActual 33: 33554432 op, 651525300.00 ns, 19.4170 ns/op
WorkloadActual 34: 33554432 op, 620365900.00 ns, 18.4883 ns/op
WorkloadActual 35: 33554432 op, 619948400.00 ns, 18.4759 ns/op
WorkloadActual 36: 33554432 op, 621962000.00 ns, 18.5359 ns/op
WorkloadActual 37: 33554432 op, 699717800.00 ns, 20.8532 ns/op
WorkloadActual 38: 33554432 op, 707351700.00 ns, 21.0807 ns/op
WorkloadActual 39: 33554432 op, 767682200.00 ns, 22.8787 ns/op
WorkloadActual 40: 33554432 op, 724832300.00 ns, 21.6017 ns/op
WorkloadActual 41: 33554432 op, 708592800.00 ns, 21.1177 ns/op
WorkloadActual 42: 33554432 op, 758266400.00 ns, 22.5981 ns/op
WorkloadActual 43: 33554432 op, 697252300.00 ns, 20.7797 ns/op
WorkloadActual 44: 33554432 op, 743548200.00 ns, 22.1595 ns/op
WorkloadActual 45: 33554432 op, 723156300.00 ns, 21.5517 ns/op
WorkloadActual 46: 33554432 op, 712875000.00 ns, 21.2453 ns/op
WorkloadActual 47: 33554432 op, 691089300.00 ns, 20.5961 ns/op
WorkloadActual 48: 33554432 op, 813097300.00 ns, 24.2322 ns/op
WorkloadActual 49: 33554432 op, 788914000.00 ns, 23.5115 ns/op
WorkloadActual 50: 33554432 op, 755076000.00 ns, 22.5030 ns/op
WorkloadActual 51: 33554432 op, 775823800.00 ns, 23.1214 ns/op
WorkloadActual 52: 33554432 op, 726958800.00 ns, 21.6651 ns/op
WorkloadActual 53: 33554432 op, 833396600.00 ns, 24.8372 ns/op
WorkloadActual 54: 33554432 op, 815176700.00 ns, 24.2942 ns/op
WorkloadActual 55: 33554432 op, 730453100.00 ns, 21.7692 ns/op
WorkloadActual 56: 33554432 op, 745513300.00 ns, 22.2180 ns/op
WorkloadActual 57: 33554432 op, 734404200.00 ns, 21.8870 ns/op
WorkloadActual 58: 33554432 op, 788273700.00 ns, 23.4924 ns/op
WorkloadActual 59: 33554432 op, 729742800.00 ns, 21.7480 ns/op
WorkloadActual 60: 33554432 op, 632945600.00 ns, 18.8632 ns/op
WorkloadActual 61: 33554432 op, 680670500.00 ns, 20.2856 ns/op
WorkloadActual 62: 33554432 op, 725816900.00 ns, 21.6310 ns/op
WorkloadActual 63: 33554432 op, 694679100.00 ns, 20.7031 ns/op
WorkloadActual 64: 33554432 op, 729308100.00 ns, 21.7351 ns/op
WorkloadActual 65: 33554432 op, 704977300.00 ns, 21.0100 ns/op
WorkloadActual 66: 33554432 op, 764248800.00 ns, 22.7764 ns/op
WorkloadActual 67: 33554432 op, 727771800.00 ns, 21.6893 ns/op
WorkloadActual 68: 33554432 op, 715270600.00 ns, 21.3167 ns/op
WorkloadActual 69: 33554432 op, 708959100.00 ns, 21.1286 ns/op
WorkloadActual 70: 33554432 op, 811104200.00 ns, 24.1728 ns/op
WorkloadActual 71: 33554432 op, 774151200.00 ns, 23.0715 ns/op
WorkloadActual 72: 33554432 op, 822098700.00 ns, 24.5005 ns/op
WorkloadActual 73: 33554432 op, 754619400.00 ns, 22.4894 ns/op
WorkloadActual 74: 33554432 op, 688227700.00 ns, 20.5108 ns/op
WorkloadActual 75: 33554432 op, 723511400.00 ns, 21.5623 ns/op
WorkloadActual 76: 33554432 op, 853168600.00 ns, 25.4264 ns/op
WorkloadActual 77: 33554432 op, 800181700.00 ns, 23.8473 ns/op
WorkloadActual 78: 33554432 op, 869365400.00 ns, 25.9091 ns/op
WorkloadActual 79: 33554432 op, 869744100.00 ns, 25.9204 ns/op
WorkloadActual 80: 33554432 op, 871390000.00 ns, 25.9694 ns/op
WorkloadActual 81: 33554432 op, 732827600.00 ns, 21.8400 ns/op
WorkloadActual 82: 33554432 op, 791043400.00 ns, 23.5749 ns/op
WorkloadActual 83: 33554432 op, 748129100.00 ns, 22.2960 ns/op
WorkloadActual 84: 33554432 op, 719312900.00 ns, 21.4372 ns/op
WorkloadActual 85: 33554432 op, 615463300.00 ns, 18.3422 ns/op
WorkloadActual 86: 33554432 op, 873586900.00 ns, 26.0349 ns/op
WorkloadActual 87: 33554432 op, 868692600.00 ns, 25.8891 ns/op
WorkloadActual 88: 33554432 op, 732863900.00 ns, 21.8410 ns/op
WorkloadActual 89: 33554432 op, 835067000.00 ns, 24.8869 ns/op
WorkloadActual 90: 33554432 op, 758525300.00 ns, 22.6058 ns/op
WorkloadActual 91: 33554432 op, 803679900.00 ns, 23.9515 ns/op
WorkloadActual 92: 33554432 op, 724592200.00 ns, 21.5945 ns/op
WorkloadActual 93: 33554432 op, 712027400.00 ns, 21.2201 ns/op
WorkloadActual 94: 33554432 op, 705139800.00 ns, 21.0148 ns/op
WorkloadActual 95: 33554432 op, 824685200.00 ns, 24.5775 ns/op
WorkloadActual 96: 33554432 op, 838214200.00 ns, 24.9807 ns/op
WorkloadActual 97: 33554432 op, 823599900.00 ns, 24.5452 ns/op
WorkloadActual 98: 33554432 op, 786173900.00 ns, 23.4298 ns/op
WorkloadActual 99: 33554432 op, 780527000.00 ns, 23.2615 ns/op
WorkloadActual 100: 33554432 op, 835399300.00 ns, 24.8968 ns/op
// AfterActualRun
WorkloadResult 1: 33554432 op, 707584400.00 ns, 21.0877 ns/op
WorkloadResult 2: 33554432 op, 746531600.00 ns, 22.2484 ns/op
WorkloadResult 3: 33554432 op, 743953200.00 ns, 22.1715 ns/op
WorkloadResult 4: 33554432 op, 616422900.00 ns, 18.3708 ns/op
WorkloadResult 5: 33554432 op, 640163900.00 ns, 19.0784 ns/op
WorkloadResult 6: 33554432 op, 684569200.00 ns, 20.4018 ns/op
WorkloadResult 7: 33554432 op, 650194700.00 ns, 19.3773 ns/op
WorkloadResult 8: 33554432 op, 754266700.00 ns, 22.4789 ns/op
WorkloadResult 9: 33554432 op, 650797900.00 ns, 19.3953 ns/op
WorkloadResult 10: 33554432 op, 650505800.00 ns, 19.3866 ns/op
WorkloadResult 11: 33554432 op, 744327100.00 ns, 22.1827 ns/op
WorkloadResult 12: 33554432 op, 708696200.00 ns, 21.1208 ns/op
WorkloadResult 13: 33554432 op, 742346300.00 ns, 22.1236 ns/op
WorkloadResult 14: 33554432 op, 785909200.00 ns, 23.4219 ns/op
WorkloadResult 15: 33554432 op, 638739400.00 ns, 19.0359 ns/op
WorkloadResult 16: 33554432 op, 562268000.00 ns, 16.7569 ns/op
WorkloadResult 17: 33554432 op, 758289100.00 ns, 22.5988 ns/op
WorkloadResult 18: 33554432 op, 651396500.00 ns, 19.4131 ns/op
WorkloadResult 19: 33554432 op, 779264400.00 ns, 23.2239 ns/op
WorkloadResult 20: 33554432 op, 655525800.00 ns, 19.5362 ns/op
WorkloadResult 21: 33554432 op, 667391300.00 ns, 19.8898 ns/op
WorkloadResult 22: 33554432 op, 720440200.00 ns, 21.4708 ns/op
WorkloadResult 23: 33554432 op, 676946200.00 ns, 20.1746 ns/op
WorkloadResult 24: 33554432 op, 682131800.00 ns, 20.3291 ns/op
WorkloadResult 25: 33554432 op, 656992400.00 ns, 19.5799 ns/op
WorkloadResult 26: 33554432 op, 778672600.00 ns, 23.2063 ns/op
WorkloadResult 27: 33554432 op, 782546700.00 ns, 23.3217 ns/op
WorkloadResult 28: 33554432 op, 768186200.00 ns, 22.8937 ns/op
WorkloadResult 29: 33554432 op, 702428800.00 ns, 20.9340 ns/op
WorkloadResult 30: 33554432 op, 773542100.00 ns, 23.0534 ns/op
WorkloadResult 31: 33554432 op, 702517700.00 ns, 20.9367 ns/op
WorkloadResult 32: 33554432 op, 815462500.00 ns, 24.3027 ns/op
WorkloadResult 33: 33554432 op, 601692800.00 ns, 17.9318 ns/op
WorkloadResult 34: 33554432 op, 570533400.00 ns, 17.0032 ns/op
WorkloadResult 35: 33554432 op, 570115900.00 ns, 16.9908 ns/op
WorkloadResult 36: 33554432 op, 572129500.00 ns, 17.0508 ns/op
WorkloadResult 37: 33554432 op, 649885300.00 ns, 19.3681 ns/op
WorkloadResult 38: 33554432 op, 657519200.00 ns, 19.5956 ns/op
WorkloadResult 39: 33554432 op, 717849700.00 ns, 21.3936 ns/op
WorkloadResult 40: 33554432 op, 674999800.00 ns, 20.1166 ns/op
WorkloadResult 41: 33554432 op, 658760300.00 ns, 19.6326 ns/op
WorkloadResult 42: 33554432 op, 708433900.00 ns, 21.1130 ns/op
WorkloadResult 43: 33554432 op, 647419800.00 ns, 19.2946 ns/op
WorkloadResult 44: 33554432 op, 693715700.00 ns, 20.6743 ns/op
WorkloadResult 45: 33554432 op, 673323800.00 ns, 20.0666 ns/op
WorkloadResult 46: 33554432 op, 663042500.00 ns, 19.7602 ns/op
WorkloadResult 47: 33554432 op, 641256800.00 ns, 19.1109 ns/op
WorkloadResult 48: 33554432 op, 763264800.00 ns, 22.7471 ns/op
WorkloadResult 49: 33554432 op, 739081500.00 ns, 22.0263 ns/op
WorkloadResult 50: 33554432 op, 705243500.00 ns, 21.0179 ns/op
WorkloadResult 51: 33554432 op, 725991300.00 ns, 21.6362 ns/op
WorkloadResult 52: 33554432 op, 677126300.00 ns, 20.1799 ns/op
WorkloadResult 53: 33554432 op, 783564100.00 ns, 23.3520 ns/op
WorkloadResult 54: 33554432 op, 765344200.00 ns, 22.8090 ns/op
WorkloadResult 55: 33554432 op, 680620600.00 ns, 20.2841 ns/op
WorkloadResult 56: 33554432 op, 695680800.00 ns, 20.7329 ns/op
WorkloadResult 57: 33554432 op, 684571700.00 ns, 20.4018 ns/op
WorkloadResult 58: 33554432 op, 738441200.00 ns, 22.0073 ns/op
WorkloadResult 59: 33554432 op, 679910300.00 ns, 20.2629 ns/op
WorkloadResult 60: 33554432 op, 583113100.00 ns, 17.3781 ns/op
WorkloadResult 61: 33554432 op, 630838000.00 ns, 18.8004 ns/op
WorkloadResult 62: 33554432 op, 675984400.00 ns, 20.1459 ns/op
WorkloadResult 63: 33554432 op, 644846600.00 ns, 19.2179 ns/op
WorkloadResult 64: 33554432 op, 679475600.00 ns, 20.2500 ns/op
WorkloadResult 65: 33554432 op, 655144800.00 ns, 19.5248 ns/op
WorkloadResult 66: 33554432 op, 714416300.00 ns, 21.2913 ns/op
WorkloadResult 67: 33554432 op, 677939300.00 ns, 20.2042 ns/op
WorkloadResult 68: 33554432 op, 665438100.00 ns, 19.8316 ns/op
WorkloadResult 69: 33554432 op, 659126600.00 ns, 19.6435 ns/op
WorkloadResult 70: 33554432 op, 761271700.00 ns, 22.6877 ns/op
WorkloadResult 71: 33554432 op, 724318700.00 ns, 21.5864 ns/op
WorkloadResult 72: 33554432 op, 772266200.00 ns, 23.0153 ns/op
WorkloadResult 73: 33554432 op, 704786900.00 ns, 21.0043 ns/op
WorkloadResult 74: 33554432 op, 638395200.00 ns, 19.0257 ns/op
WorkloadResult 75: 33554432 op, 673678900.00 ns, 20.0772 ns/op
WorkloadResult 76: 33554432 op, 803336100.00 ns, 23.9413 ns/op
WorkloadResult 77: 33554432 op, 750349200.00 ns, 22.3621 ns/op
WorkloadResult 78: 33554432 op, 819532900.00 ns, 24.4240 ns/op
WorkloadResult 79: 33554432 op, 819911600.00 ns, 24.4353 ns/op
WorkloadResult 80: 33554432 op, 821557500.00 ns, 24.4843 ns/op
WorkloadResult 81: 33554432 op, 682995100.00 ns, 20.3548 ns/op
WorkloadResult 82: 33554432 op, 741210900.00 ns, 22.0898 ns/op
WorkloadResult 83: 33554432 op, 698296600.00 ns, 20.8109 ns/op
WorkloadResult 84: 33554432 op, 669480400.00 ns, 19.9521 ns/op
WorkloadResult 85: 33554432 op, 565630800.00 ns, 16.8571 ns/op
WorkloadResult 86: 33554432 op, 823754400.00 ns, 24.5498 ns/op
WorkloadResult 87: 33554432 op, 818860100.00 ns, 24.4039 ns/op
WorkloadResult 88: 33554432 op, 683031400.00 ns, 20.3559 ns/op
WorkloadResult 89: 33554432 op, 785234500.00 ns, 23.4018 ns/op
WorkloadResult 90: 33554432 op, 708692800.00 ns, 21.1207 ns/op
WorkloadResult 91: 33554432 op, 753847400.00 ns, 22.4664 ns/op
WorkloadResult 92: 33554432 op, 674759700.00 ns, 20.1094 ns/op
WorkloadResult 93: 33554432 op, 662194900.00 ns, 19.7349 ns/op
WorkloadResult 94: 33554432 op, 655307300.00 ns, 19.5297 ns/op
WorkloadResult 95: 33554432 op, 774852700.00 ns, 23.0924 ns/op
WorkloadResult 96: 33554432 op, 788381700.00 ns, 23.4956 ns/op
WorkloadResult 97: 33554432 op, 773767400.00 ns, 23.0601 ns/op
WorkloadResult 98: 33554432 op, 736341400.00 ns, 21.9447 ns/op
WorkloadResult 99: 33554432 op, 730694500.00 ns, 21.7764 ns/op
WorkloadResult 100: 33554432 op, 785566800.00 ns, 23.4117 ns/op
GC: 342 0 0 1073741824 33554432
Threading: 2 0 33554432
// AfterAll
// Benchmark Process 8176 has exited with code 0
Mean = 20.959 ns, StdErr = 0.190 ns (0.90%), N = 100, StdDev = 1.896 ns
Min = 16.757 ns, Q1 = 19.623 ns, Median = 20.772 ns, Q3 = 22.470 ns, Max = 24.550 ns
IQR = 2.846 ns, LowerFence = 15.354 ns, UpperFence = 26.739 ns
ConfidenceInterval = [20.316 ns; 21.602 ns] (CI 99.9%), Margin = 0.643 ns (3.07% of Mean)
Skewness = -0.06, Kurtosis = 2.44, MValue = 2.85
// **************************
// Benchmark: RankTests.Rank: DefaultJob [n=45, k=6, kCombination=Int32[6]]
// *** Execute ***
// Launch: 1 / 1
// Execute: dotnet "45ee11c8-1f85-49bd-9a64-9c03db6b4199.dll" --benchmarkName "PerformanceTests.CombinatorialNumberSystems.RankTests.Rank(n: 45, k: 6, kCombination: [11, 16, 23, 34, 42, ...])" --job "Default" --benchmarkId 2 in C:\dev\LottoGenerator\LG.Tests.BenchmarkDotNet\bin\Release\netcoreapp3.1\45ee11c8-1f85-49bd-9a64-9c03db6b4199\bin\Release\netcoreapp3.1
// BeforeAnythingElse
// Benchmark Process Environment Information:
// Runtime=.NET Core 3.1.13 (CoreCLR 4.700.21.11102, CoreFX 4.700.21.11602), X64 RyuJIT
// GC=Concurrent Workstation
// Job: DefaultJob
OverheadJitting 1: 1 op, 365900.00 ns, 365.9000 us/op
WorkloadJitting 1: 1 op, 2056400.00 ns, 2.0564 ms/op
OverheadJitting 2: 16 op, 822000.00 ns, 51.3750 us/op
WorkloadJitting 2: 16 op, 894400.00 ns, 55.9000 us/op
WorkloadPilot 1: 16 op, 5200.00 ns, 325.0000 ns/op
WorkloadPilot 2: 32 op, 4200.00 ns, 131.2500 ns/op
WorkloadPilot 3: 64 op, 5400.00 ns, 84.3750 ns/op
WorkloadPilot 4: 128 op, 9100.00 ns, 71.0938 ns/op
WorkloadPilot 5: 256 op, 19400.00 ns, 75.7812 ns/op
WorkloadPilot 6: 512 op, 32100.00 ns, 62.6953 ns/op
WorkloadPilot 7: 1024 op, 63600.00 ns, 62.1094 ns/op
WorkloadPilot 8: 2048 op, 122000.00 ns, 59.5703 ns/op
WorkloadPilot 9: 4096 op, 290500.00 ns, 70.9229 ns/op
WorkloadPilot 10: 8192 op, 594600.00 ns, 72.5830 ns/op
WorkloadPilot 11: 16384 op, 1359600.00 ns, 82.9834 ns/op
WorkloadPilot 12: 32768 op, 2657700.00 ns, 81.1066 ns/op
WorkloadPilot 13: 65536 op, 4659300.00 ns, 71.0953 ns/op
WorkloadPilot 14: 131072 op, 10487700.00 ns, 80.0148 ns/op
WorkloadPilot 15: 262144 op, 17045700.00 ns, 65.0242 ns/op
WorkloadPilot 16: 524288 op, 33459600.00 ns, 63.8191 ns/op
WorkloadPilot 17: 1048576 op, 64377300.00 ns, 61.3950 ns/op
WorkloadPilot 18: 2097152 op, 129418000.00 ns, 61.7113 ns/op
WorkloadPilot 19: 4194304 op, 316398900.00 ns, 75.4354 ns/op
WorkloadPilot 20: 8388608 op, 570606100.00 ns, 68.0215 ns/op
OverheadWarmup 1: 8388608 op, 13013000.00 ns, 1.5513 ns/op
OverheadWarmup 2: 8388608 op, 13213100.00 ns, 1.5751 ns/op
OverheadWarmup 3: 8388608 op, 12869600.00 ns, 1.5342 ns/op
OverheadWarmup 4: 8388608 op, 13657900.00 ns, 1.6281 ns/op
OverheadWarmup 5: 8388608 op, 13315000.00 ns, 1.5873 ns/op
OverheadActual 1: 8388608 op, 13588900.00 ns, 1.6199 ns/op
OverheadActual 2: 8388608 op, 13459000.00 ns, 1.6044 ns/op
OverheadActual 3: 8388608 op, 13032200.00 ns, 1.5536 ns/op
OverheadActual 4: 8388608 op, 13809300.00 ns, 1.6462 ns/op
OverheadActual 5: 8388608 op, 12916400.00 ns, 1.5398 ns/op
OverheadActual 6: 8388608 op, 13405100.00 ns, 1.5980 ns/op
OverheadActual 7: 8388608 op, 14263600.00 ns, 1.7004 ns/op
OverheadActual 8: 8388608 op, 13710700.00 ns, 1.6344 ns/op
OverheadActual 9: 8388608 op, 13530200.00 ns, 1.6129 ns/op
OverheadActual 10: 8388608 op, 12432700.00 ns, 1.4821 ns/op
OverheadActual 11: 8388608 op, 13438900.00 ns, 1.6020 ns/op
OverheadActual 12: 8388608 op, 13790500.00 ns, 1.6440 ns/op
OverheadActual 13: 8388608 op, 13547500.00 ns, 1.6150 ns/op
OverheadActual 14: 8388608 op, 13339400.00 ns, 1.5902 ns/op
OverheadActual 15: 8388608 op, 12770900.00 ns, 1.5224 ns/op
WorkloadWarmup 1: 8388608 op, 627579900.00 ns, 74.8134 ns/op
WorkloadWarmup 2: 8388608 op, 572327200.00 ns, 68.2267 ns/op
WorkloadWarmup 3: 8388608 op, 610448500.00 ns, 72.7711 ns/op
WorkloadWarmup 4: 8388608 op, 594790800.00 ns, 70.9046 ns/op
WorkloadWarmup 5: 8388608 op, 587834100.00 ns, 70.0753 ns/op
WorkloadWarmup 6: 8388608 op, 566589300.00 ns, 67.5427 ns/op
WorkloadWarmup 7: 8388608 op, 608915100.00 ns, 72.5883 ns/op
WorkloadWarmup 8: 8388608 op, 588403600.00 ns, 70.1432 ns/op
// BeforeActualRun
WorkloadActual 1: 8388608 op, 581242000.00 ns, 69.2894 ns/op
WorkloadActual 2: 8388608 op, 596830200.00 ns, 71.1477 ns/op
WorkloadActual 3: 8388608 op, 644552400.00 ns, 76.8366 ns/op
WorkloadActual 4: 8388608 op, 588938500.00 ns, 70.2069 ns/op
WorkloadActual 5: 8388608 op, 548653700.00 ns, 65.4046 ns/op
WorkloadActual 6: 8388608 op, 586159600.00 ns, 69.8757 ns/op
WorkloadActual 7: 8388608 op, 578941900.00 ns, 69.0153 ns/op
WorkloadActual 8: 8388608 op, 578268400.00 ns, 68.9350 ns/op
WorkloadActual 9: 8388608 op, 596659800.00 ns, 71.1274 ns/op
WorkloadActual 10: 8388608 op, 650449100.00 ns, 77.5396 ns/op
WorkloadActual 11: 8388608 op, 588266700.00 ns, 70.1269 ns/op
WorkloadActual 12: 8388608 op, 594087900.00 ns, 70.8208 ns/op
WorkloadActual 13: 8388608 op, 607513800.00 ns, 72.4213 ns/op
WorkloadActual 14: 8388608 op, 567979900.00 ns, 67.7085 ns/op
WorkloadActual 15: 8388608 op, 601092900.00 ns, 71.6559 ns/op
WorkloadActual 16: 8388608 op, 594766100.00 ns, 70.9016 ns/op
WorkloadActual 17: 8388608 op, 578093200.00 ns, 68.9141 ns/op
WorkloadActual 18: 8388608 op, 606270000.00 ns, 72.2730 ns/op
WorkloadActual 19: 8388608 op, 572948800.00 ns, 68.3008 ns/op
WorkloadActual 20: 8388608 op, 597020100.00 ns, 71.1703 ns/op
WorkloadActual 21: 8388608 op, 591880500.00 ns, 70.5577 ns/op
WorkloadActual 22: 8388608 op, 591471600.00 ns, 70.5089 ns/op
WorkloadActual 23: 8388608 op, 583234300.00 ns, 69.5269 ns/op
// AfterActualRun
WorkloadResult 1: 8388608 op, 567783000.00 ns, 67.6850 ns/op
WorkloadResult 2: 8388608 op, 583371200.00 ns, 69.5433 ns/op
WorkloadResult 3: 8388608 op, 575479500.00 ns, 68.6025 ns/op
WorkloadResult 4: 8388608 op, 535194700.00 ns, 63.8002 ns/op
WorkloadResult 5: 8388608 op, 572700600.00 ns, 68.2712 ns/op
WorkloadResult 6: 8388608 op, 565482900.00 ns, 67.4108 ns/op
WorkloadResult 7: 8388608 op, 564809400.00 ns, 67.3305 ns/op
WorkloadResult 8: 8388608 op, 583200800.00 ns, 69.5230 ns/op
WorkloadResult 9: 8388608 op, 574807700.00 ns, 68.5224 ns/op
WorkloadResult 10: 8388608 op, 580628900.00 ns, 69.2164 ns/op
WorkloadResult 11: 8388608 op, 594054800.00 ns, 70.8169 ns/op
WorkloadResult 12: 8388608 op, 554520900.00 ns, 66.1040 ns/op
WorkloadResult 13: 8388608 op, 587633900.00 ns, 70.0514 ns/op
WorkloadResult 14: 8388608 op, 581307100.00 ns, 69.2972 ns/op
WorkloadResult 15: 8388608 op, 564634200.00 ns, 67.3096 ns/op
WorkloadResult 16: 8388608 op, 592811000.00 ns, 70.6686 ns/op
WorkloadResult 17: 8388608 op, 559489800.00 ns, 66.6964 ns/op
WorkloadResult 18: 8388608 op, 583561100.00 ns, 69.5659 ns/op
WorkloadResult 19: 8388608 op, 578421500.00 ns, 68.9532 ns/op
WorkloadResult 20: 8388608 op, 578012600.00 ns, 68.9045 ns/op
WorkloadResult 21: 8388608 op, 569775300.00 ns, 67.9225 ns/op
GC: 213 0 0 671088640 8388608
Threading: 2 0 8388608
// AfterAll
// Benchmark Process 15624 has exited with code 0
Mean = 68.390 ns, StdErr = 0.356 ns (0.52%), N = 21, StdDev = 1.630 ns
Min = 63.800 ns, Q1 = 67.411 ns, Median = 68.603 ns, Q3 = 69.523 ns, Max = 70.817 ns
IQR = 2.112 ns, LowerFence = 64.243 ns, UpperFence = 72.691 ns
ConfidenceInterval = [67.021 ns; 69.759 ns] (CI 99.9%), Margin = 1.369 ns (2.00% of Mean)
Skewness = -0.88, Kurtosis = 3.77, MValue = 2
// **************************
// Benchmark: RankTests.FastRank: DefaultJob [n=45, k=6, kCombination=Int32[6]]
// *** Execute ***
// Launch: 1 / 1
// Execute: dotnet "45ee11c8-1f85-49bd-9a64-9c03db6b4199.dll" --benchmarkName "PerformanceTests.CombinatorialNumberSystems.RankTests.FastRank(n: 45, k: 6, kCombination: [11, 16, 23, 34, 42, ...])" --job "Default" --benchmarkId 3 in C:\dev\LottoGenerator\LG.Tests.BenchmarkDotNet\bin\Release\netcoreapp3.1\45ee11c8-1f85-49bd-9a64-9c03db6b4199\bin\Release\netcoreapp3.1
// BeforeAnythingElse
// Benchmark Process Environment Information:
// Runtime=.NET Core 3.1.13 (CoreCLR 4.700.21.11102, CoreFX 4.700.21.11602), X64 RyuJIT
// GC=Concurrent Workstation
// Job: DefaultJob
OverheadJitting 1: 1 op, 355000.00 ns, 355.0000 us/op
WorkloadJitting 1: 1 op, 2058000.00 ns, 2.0580 ms/op
OverheadJitting 2: 16 op, 616100.00 ns, 38.5063 us/op
WorkloadJitting 2: 16 op, 1017400.00 ns, 63.5875 us/op
WorkloadPilot 1: 16 op, 3700.00 ns, 231.2500 ns/op
WorkloadPilot 2: 32 op, 2300.00 ns, 71.8750 ns/op
WorkloadPilot 3: 64 op, 4100.00 ns, 64.0625 ns/op
WorkloadPilot 4: 128 op, 5800.00 ns, 45.3125 ns/op
WorkloadPilot 5: 256 op, 15300.00 ns, 59.7656 ns/op
WorkloadPilot 6: 512 op, 22400.00 ns, 43.7500 ns/op
WorkloadPilot 7: 1024 op, 38800.00 ns, 37.8906 ns/op
WorkloadPilot 8: 2048 op, 104700.00 ns, 51.1230 ns/op
WorkloadPilot 9: 4096 op, 183500.00 ns, 44.7998 ns/op
WorkloadPilot 10: 8192 op, 327800.00 ns, 40.0146 ns/op
WorkloadPilot 11: 16384 op, 710300.00 ns, 43.3533 ns/op
WorkloadPilot 12: 32768 op, 1405300.00 ns, 42.8864 ns/op
WorkloadPilot 13: 65536 op, 2884000.00 ns, 44.0063 ns/op
WorkloadPilot 14: 131072 op, 6056500.00 ns, 46.2074 ns/op
WorkloadPilot 15: 262144 op, 10311700.00 ns, 39.3360 ns/op
WorkloadPilot 16: 524288 op, 21408300.00 ns, 40.8331 ns/op
WorkloadPilot 17: 1048576 op, 40503600.00 ns, 38.6272 ns/op
WorkloadPilot 18: 2097152 op, 81693200.00 ns, 38.9544 ns/op
WorkloadPilot 19: 4194304 op, 170953600.00 ns, 40.7585 ns/op
WorkloadPilot 20: 8388608 op, 351434100.00 ns, 41.8942 ns/op
WorkloadPilot 21: 16777216 op, 720303000.00 ns, 42.9334 ns/op
OverheadWarmup 1: 16777216 op, 27786200.00 ns, 1.6562 ns/op
OverheadWarmup 2: 16777216 op, 25512100.00 ns, 1.5206 ns/op
OverheadWarmup 3: 16777216 op, 26006700.00 ns, 1.5501 ns/op
OverheadWarmup 4: 16777216 op, 26124600.00 ns, 1.5571 ns/op
OverheadWarmup 5: 16777216 op, 26241500.00 ns, 1.5641 ns/op
OverheadWarmup 6: 16777216 op, 26216200.00 ns, 1.5626 ns/op
OverheadWarmup 7: 16777216 op, 25994100.00 ns, 1.5494 ns/op
OverheadWarmup 8: 16777216 op, 26596100.00 ns, 1.5853 ns/op
OverheadWarmup 9: 16777216 op, 25710200.00 ns, 1.5324 ns/op
OverheadActual 1: 16777216 op, 26726600.00 ns, 1.5930 ns/op
OverheadActual 2: 16777216 op, 26438800.00 ns, 1.5759 ns/op
OverheadActual 3: 16777216 op, 25732900.00 ns, 1.5338 ns/op
OverheadActual 4: 16777216 op, 28904800.00 ns, 1.7229 ns/op
OverheadActual 5: 16777216 op, 27660200.00 ns, 1.6487 ns/op
OverheadActual 6: 16777216 op, 26092600.00 ns, 1.5552 ns/op
OverheadActual 7: 16777216 op, 26062400.00 ns, 1.5534 ns/op
OverheadActual 8: 16777216 op, 26225500.00 ns, 1.5632 ns/op
OverheadActual 9: 16777216 op, 26529700.00 ns, 1.5813 ns/op
OverheadActual 10: 16777216 op, 26436000.00 ns, 1.5757 ns/op
OverheadActual 11: 16777216 op, 27637400.00 ns, 1.6473 ns/op
OverheadActual 12: 16777216 op, 24890000.00 ns, 1.4836 ns/op
OverheadActual 13: 16777216 op, 24776600.00 ns, 1.4768 ns/op
OverheadActual 14: 16777216 op, 24860200.00 ns, 1.4818 ns/op
OverheadActual 15: 16777216 op, 24552800.00 ns, 1.4635 ns/op
WorkloadWarmup 1: 16777216 op, 713775700.00 ns, 42.5443 ns/op
WorkloadWarmup 2: 16777216 op, 758247600.00 ns, 45.1951 ns/op
WorkloadWarmup 3: 16777216 op, 753507900.00 ns, 44.9126 ns/op
WorkloadWarmup 4: 16777216 op, 739249000.00 ns, 44.0627 ns/op
WorkloadWarmup 5: 16777216 op, 712706400.00 ns, 42.4806 ns/op
WorkloadWarmup 6: 16777216 op, 740007000.00 ns, 44.1079 ns/op
WorkloadWarmup 7: 16777216 op, 712655600.00 ns, 42.4776 ns/op
// BeforeActualRun
WorkloadActual 1: 16777216 op, 732126800.00 ns, 43.6382 ns/op
WorkloadActual 2: 16777216 op, 802449600.00 ns, 47.8297 ns/op
WorkloadActual 3: 16777216 op, 758647100.00 ns, 45.2189 ns/op
WorkloadActual 4: 16777216 op, 765736100.00 ns, 45.6414 ns/op
WorkloadActual 5: 16777216 op, 836131000.00 ns, 49.8373 ns/op
WorkloadActual 6: 16777216 op, 842832600.00 ns, 50.2367 ns/op
WorkloadActual 7: 16777216 op, 737226900.00 ns, 43.9421 ns/op
WorkloadActual 8: 16777216 op, 846581600.00 ns, 50.4602 ns/op
WorkloadActual 9: 16777216 op, 810763600.00 ns, 48.3253 ns/op
WorkloadActual 10: 16777216 op, 848069100.00 ns, 50.5489 ns/op
WorkloadActual 11: 16777216 op, 826033400.00 ns, 49.2354 ns/op
WorkloadActual 12: 16777216 op, 810276200.00 ns, 48.2962 ns/op
WorkloadActual 13: 16777216 op, 830414700.00 ns, 49.4966 ns/op
WorkloadActual 14: 16777216 op, 713076700.00 ns, 42.5027 ns/op
WorkloadActual 15: 16777216 op, 854827700.00 ns, 50.9517 ns/op
WorkloadActual 16: 16777216 op, 832590900.00 ns, 49.6263 ns/op
WorkloadActual 17: 16777216 op, 709685100.00 ns, 42.3005 ns/op
WorkloadActual 18: 16777216 op, 648470600.00 ns, 38.6519 ns/op
WorkloadActual 19: 16777216 op, 703838400.00 ns, 41.9520 ns/op
WorkloadActual 20: 16777216 op, 784902600.00 ns, 46.7838 ns/op
WorkloadActual 21: 16777216 op, 853599200.00 ns, 50.8785 ns/op
WorkloadActual 22: 16777216 op, 852136400.00 ns, 50.7913 ns/op
WorkloadActual 23: 16777216 op, 732500000.00 ns, 43.6604 ns/op
WorkloadActual 24: 16777216 op, 738750500.00 ns, 44.0330 ns/op
WorkloadActual 25: 16777216 op, 851121400.00 ns, 50.7308 ns/op
WorkloadActual 26: 16777216 op, 727211300.00 ns, 43.3452 ns/op
WorkloadActual 27: 16777216 op, 836599100.00 ns, 49.8652 ns/op
WorkloadActual 28: 16777216 op, 821162800.00 ns, 48.9451 ns/op
WorkloadActual 29: 16777216 op, 744107400.00 ns, 44.3523 ns/op
WorkloadActual 30: 16777216 op, 811702200.00 ns, 48.3812 ns/op
WorkloadActual 31: 16777216 op, 818184900.00 ns, 48.7676 ns/op
WorkloadActual 32: 16777216 op, 845311000.00 ns, 50.3845 ns/op
WorkloadActual 33: 16777216 op, 744053000.00 ns, 44.3490 ns/op
WorkloadActual 34: 16777216 op, 640583000.00 ns, 38.1817 ns/op
WorkloadActual 35: 16777216 op, 622670200.00 ns, 37.1140 ns/op
WorkloadActual 36: 16777216 op, 618088600.00 ns, 36.8410 ns/op
WorkloadActual 37: 16777216 op, 643828800.00 ns, 38.3752 ns/op
WorkloadActual 38: 16777216 op, 614649700.00 ns, 36.6360 ns/op
WorkloadActual 39: 16777216 op, 605541800.00 ns, 36.0931 ns/op
WorkloadActual 40: 16777216 op, 609925300.00 ns, 36.3544 ns/op
WorkloadActual 41: 16777216 op, 611538800.00 ns, 36.4506 ns/op
WorkloadActual 42: 16777216 op, 617094000.00 ns, 36.7817 ns/op
WorkloadActual 43: 16777216 op, 607674600.00 ns, 36.2202 ns/op
WorkloadActual 44: 16777216 op, 619813000.00 ns, 36.9437 ns/op
WorkloadActual 45: 16777216 op, 746721100.00 ns, 44.5080 ns/op
WorkloadActual 46: 16777216 op, 670158000.00 ns, 39.9445 ns/op
WorkloadActual 47: 16777216 op, 806764100.00 ns, 48.0869 ns/op
WorkloadActual 48: 16777216 op, 645482600.00 ns, 38.4738 ns/op
WorkloadActual 49: 16777216 op, 669794500.00 ns, 39.9229 ns/op
WorkloadActual 50: 16777216 op, 756066900.00 ns, 45.0651 ns/op
WorkloadActual 51: 16777216 op, 682944600.00 ns, 40.7067 ns/op
WorkloadActual 52: 16777216 op, 816130900.00 ns, 48.6452 ns/op
WorkloadActual 53: 16777216 op, 837159700.00 ns, 49.8986 ns/op
WorkloadActual 54: 16777216 op, 734890000.00 ns, 43.8029 ns/op
WorkloadActual 55: 16777216 op, 810223500.00 ns, 48.2931 ns/op
WorkloadActual 56: 16777216 op, 740484200.00 ns, 44.1363 ns/op
WorkloadActual 57: 16777216 op, 716583400.00 ns, 42.7117 ns/op
WorkloadActual 58: 16777216 op, 840658500.00 ns, 50.1072 ns/op
WorkloadActual 59: 16777216 op, 742116800.00 ns, 44.2336 ns/op
WorkloadActual 60: 16777216 op, 785025400.00 ns, 46.7912 ns/op
WorkloadActual 61: 16777216 op, 735003300.00 ns, 43.8096 ns/op
WorkloadActual 62: 16777216 op, 817889800.00 ns, 48.7500 ns/op
WorkloadActual 63: 16777216 op, 718019100.00 ns, 42.7973 ns/op
WorkloadActual 64: 16777216 op, 723564900.00 ns, 43.1278 ns/op
WorkloadActual 65: 16777216 op, 715088700.00 ns, 42.6226 ns/op
WorkloadActual 66: 16777216 op, 743232200.00 ns, 44.3001 ns/op
WorkloadActual 67: 16777216 op, 735197300.00 ns, 43.8212 ns/op
WorkloadActual 68: 16777216 op, 703657600.00 ns, 41.9413 ns/op
WorkloadActual 69: 16777216 op, 726350100.00 ns, 43.2938 ns/op
WorkloadActual 70: 16777216 op, 850692000.00 ns, 50.7052 ns/op
WorkloadActual 71: 16777216 op, 729382000.00 ns, 43.4746 ns/op
WorkloadActual 72: 16777216 op, 735809800.00 ns, 43.8577 ns/op
WorkloadActual 73: 16777216 op, 726347400.00 ns, 43.2937 ns/op
WorkloadActual 74: 16777216 op, 729926900.00 ns, 43.5070 ns/op
WorkloadActual 75: 16777216 op, 822516000.00 ns, 49.0258 ns/op
WorkloadActual 76: 16777216 op, 688452200.00 ns, 41.0349 ns/op
WorkloadActual 77: 16777216 op, 720104700.00 ns, 42.9216 ns/op
WorkloadActual 78: 16777216 op, 824136100.00 ns, 49.1223 ns/op
WorkloadActual 79: 16777216 op, 706394700.00 ns, 42.1044 ns/op
WorkloadActual 80: 16777216 op, 836172900.00 ns, 49.8398 ns/op
WorkloadActual 81: 16777216 op, 737524400.00 ns, 43.9599 ns/op
WorkloadActual 82: 16777216 op, 819703100.00 ns, 48.8581 ns/op
WorkloadActual 83: 16777216 op, 651674600.00 ns, 38.8428 ns/op
WorkloadActual 84: 16777216 op, 610856300.00 ns, 36.4099 ns/op
WorkloadActual 85: 16777216 op, 724452200.00 ns, 43.1807 ns/op
WorkloadActual 86: 16777216 op, 773611400.00 ns, 46.1108 ns/op
WorkloadActual 87: 16777216 op, 754489500.00 ns, 44.9711 ns/op
WorkloadActual 88: 16777216 op, 743933100.00 ns, 44.3419 ns/op
WorkloadActual 89: 16777216 op, 752007800.00 ns, 44.8232 ns/op
WorkloadActual 90: 16777216 op, 731124300.00 ns, 43.5784 ns/op
WorkloadActual 91: 16777216 op, 754088400.00 ns, 44.9472 ns/op
WorkloadActual 92: 16777216 op, 752908700.00 ns, 44.8769 ns/op
WorkloadActual 93: 16777216 op, 821309600.00 ns, 48.9539 ns/op
WorkloadActual 94: 16777216 op, 739635400.00 ns, 44.0857 ns/op
WorkloadActual 95: 16777216 op, 810484500.00 ns, 48.3086 ns/op
WorkloadActual 96: 16777216 op, 843108400.00 ns, 50.2532 ns/op
WorkloadActual 97: 16777216 op, 760126600.00 ns, 45.3071 ns/op
WorkloadActual 98: 16777216 op, 759377000.00 ns, 45.2624 ns/op
WorkloadActual 99: 16777216 op, 801817900.00 ns, 47.7921 ns/op
WorkloadActual 100: 16777216 op, 827806200.00 ns, 49.3411 ns/op
// AfterActualRun
WorkloadResult 1: 16777216 op, 705901300.00 ns, 42.0750 ns/op
WorkloadResult 2: 16777216 op, 776224100.00 ns, 46.2666 ns/op
WorkloadResult 3: 16777216 op, 732421600.00 ns, 43.6557 ns/op
WorkloadResult 4: 16777216 op, 739510600.00 ns, 44.0783 ns/op
WorkloadResult 5: 16777216 op, 809905500.00 ns, 48.2741 ns/op
WorkloadResult 6: 16777216 op, 816607100.00 ns, 48.6736 ns/op
WorkloadResult 7: 16777216 op, 711001400.00 ns, 42.3790 ns/op
WorkloadResult 8: 16777216 op, 820356100.00 ns, 48.8970 ns/op
WorkloadResult 9: 16777216 op, 784538100.00 ns, 46.7621 ns/op
WorkloadResult 10: 16777216 op, 821843600.00 ns, 48.9857 ns/op
WorkloadResult 11: 16777216 op, 799807900.00 ns, 47.6723 ns/op
WorkloadResult 12: 16777216 op, 784050700.00 ns, 46.7331 ns/op
WorkloadResult 13: 16777216 op, 804189200.00 ns, 47.9334 ns/op
WorkloadResult 14: 16777216 op, 686851200.00 ns, 40.9395 ns/op
WorkloadResult 15: 16777216 op, 828602200.00 ns, 49.3885 ns/op
WorkloadResult 16: 16777216 op, 806365400.00 ns, 48.0631 ns/op
WorkloadResult 17: 16777216 op, 683459600.00 ns, 40.7374 ns/op
WorkloadResult 18: 16777216 op, 622245100.00 ns, 37.0887 ns/op
WorkloadResult 19: 16777216 op, 677612900.00 ns, 40.3889 ns/op
WorkloadResult 20: 16777216 op, 758677100.00 ns, 45.2207 ns/op
WorkloadResult 21: 16777216 op, 827373700.00 ns, 49.3153 ns/op
WorkloadResult 22: 16777216 op, 825910900.00 ns, 49.2281 ns/op
WorkloadResult 23: 16777216 op, 706274500.00 ns, 42.0972 ns/op
WorkloadResult 24: 16777216 op, 712525000.00 ns, 42.4698 ns/op
WorkloadResult 25: 16777216 op, 824895900.00 ns, 49.1676 ns/op
WorkloadResult 26: 16777216 op, 700985800.00 ns, 41.7820 ns/op
WorkloadResult 27: 16777216 op, 810373600.00 ns, 48.3020 ns/op
WorkloadResult 28: 16777216 op, 794937300.00 ns, 47.3820 ns/op
WorkloadResult 29: 16777216 op, 717881900.00 ns, 42.7891 ns/op
WorkloadResult 30: 16777216 op, 785476700.00 ns, 46.8181 ns/op
WorkloadResult 31: 16777216 op, 791959400.00 ns, 47.2045 ns/op
WorkloadResult 32: 16777216 op, 819085500.00 ns, 48.8213 ns/op
WorkloadResult 33: 16777216 op, 717827500.00 ns, 42.7859 ns/op
WorkloadResult 34: 16777216 op, 614357500.00 ns, 36.6186 ns/op
WorkloadResult 35: 16777216 op, 596444700.00 ns, 35.5509 ns/op
WorkloadResult 36: 16777216 op, 591863100.00 ns, 35.2778 ns/op
WorkloadResult 37: 16777216 op, 617603300.00 ns, 36.8120 ns/op
WorkloadResult 38: 16777216 op, 588424200.00 ns, 35.0728 ns/op
WorkloadResult 39: 16777216 op, 579316300.00 ns, 34.5299 ns/op
WorkloadResult 40: 16777216 op, 583699800.00 ns, 34.7912 ns/op
WorkloadResult 41: 16777216 op, 585313300.00 ns, 34.8874 ns/op
WorkloadResult 42: 16777216 op, 590868500.00 ns, 35.2185 ns/op
WorkloadResult 43: 16777216 op, 581449100.00 ns, 34.6571 ns/op
WorkloadResult 44: 16777216 op, 593587500.00 ns, 35.3806 ns/op
WorkloadResult 45: 16777216 op, 720495600.00 ns, 42.9449 ns/op
WorkloadResult 46: 16777216 op, 643932500.00 ns, 38.3814 ns/op
WorkloadResult 47: 16777216 op, 780538600.00 ns, 46.5237 ns/op
WorkloadResult 48: 16777216 op, 619257100.00 ns, 36.9106 ns/op
WorkloadResult 49: 16777216 op, 643569000.00 ns, 38.3597 ns/op
WorkloadResult 50: 16777216 op, 729841400.00 ns, 43.5019 ns/op
WorkloadResult 51: 16777216 op, 656719100.00 ns, 39.1435 ns/op
WorkloadResult 52: 16777216 op, 789905400.00 ns, 47.0820 ns/op
WorkloadResult 53: 16777216 op, 810934200.00 ns, 48.3354 ns/op
WorkloadResult 54: 16777216 op, 708664500.00 ns, 42.2397 ns/op
WorkloadResult 55: 16777216 op, 783998000.00 ns, 46.7299 ns/op
WorkloadResult 56: 16777216 op, 714258700.00 ns, 42.5731 ns/op
WorkloadResult 57: 16777216 op, 690357900.00 ns, 41.1485 ns/op
WorkloadResult 58: 16777216 op, 814433000.00 ns, 48.5440 ns/op
WorkloadResult 59: 16777216 op, 715891300.00 ns, 42.6704 ns/op
WorkloadResult 60: 16777216 op, 758799900.00 ns, 45.2280 ns/op
WorkloadResult 61: 16777216 op, 708777800.00 ns, 42.2464 ns/op
WorkloadResult 62: 16777216 op, 791664300.00 ns, 47.1869 ns/op
WorkloadResult 63: 16777216 op, 691793600.00 ns, 41.2341 ns/op
WorkloadResult 64: 16777216 op, 697339400.00 ns, 41.5647 ns/op
WorkloadResult 65: 16777216 op, 688863200.00 ns, 41.0594 ns/op
WorkloadResult 66: 16777216 op, 717006700.00 ns, 42.7369 ns/op
WorkloadResult 67: 16777216 op, 708971800.00 ns, 42.2580 ns/op
WorkloadResult 68: 16777216 op, 677432100.00 ns, 40.3781 ns/op
WorkloadResult 69: 16777216 op, 700124600.00 ns, 41.7307 ns/op
WorkloadResult 70: 16777216 op, 824466500.00 ns, 49.1420 ns/op
WorkloadResult 71: 16777216 op, 703156500.00 ns, 41.9114 ns/op
WorkloadResult 72: 16777216 op, 709584300.00 ns, 42.2945 ns/op
WorkloadResult 73: 16777216 op, 700121900.00 ns, 41.7305 ns/op
WorkloadResult 74: 16777216 op, 703701400.00 ns, 41.9439 ns/op
WorkloadResult 75: 16777216 op, 796290500.00 ns, 47.4626 ns/op
WorkloadResult 76: 16777216 op, 662226700.00 ns, 39.4718 ns/op
WorkloadResult 77: 16777216 op, 693879200.00 ns, 41.3584 ns/op
WorkloadResult 78: 16777216 op, 797910600.00 ns, 47.5592 ns/op
WorkloadResult 79: 16777216 op, 680169200.00 ns, 40.5412 ns/op
WorkloadResult 80: 16777216 op, 809947400.00 ns, 48.2766 ns/op
WorkloadResult 81: 16777216 op, 711298900.00 ns, 42.3967 ns/op
WorkloadResult 82: 16777216 op, 793477600.00 ns, 47.2950 ns/op
WorkloadResult 83: 16777216 op, 625449100.00 ns, 37.2797 ns/op
WorkloadResult 84: 16777216 op, 584630800.00 ns, 34.8467 ns/op
WorkloadResult 85: 16777216 op, 698226700.00 ns, 41.6176 ns/op
WorkloadResult 86: 16777216 op, 747385900.00 ns, 44.5477 ns/op
WorkloadResult 87: 16777216 op, 728264000.00 ns, 43.4079 ns/op
WorkloadResult 88: 16777216 op, 717707600.00 ns, 42.7787 ns/op
WorkloadResult 89: 16777216 op, 725782300.00 ns, 43.2600 ns/op
WorkloadResult 90: 16777216 op, 704898800.00 ns, 42.0152 ns/op
WorkloadResult 91: 16777216 op, 727862900.00 ns, 43.3840 ns/op
WorkloadResult 92: 16777216 op, 726683200.00 ns, 43.3137 ns/op
WorkloadResult 93: 16777216 op, 795084100.00 ns, 47.3907 ns/op
WorkloadResult 94: 16777216 op, 713409900.00 ns, 42.5225 ns/op
WorkloadResult 95: 16777216 op, 784259000.00 ns, 46.7455 ns/op
WorkloadResult 96: 16777216 op, 816882900.00 ns, 48.6900 ns/op
WorkloadResult 97: 16777216 op, 733901100.00 ns, 43.7439 ns/op
WorkloadResult 98: 16777216 op, 733151500.00 ns, 43.6992 ns/op
WorkloadResult 99: 16777216 op, 775592400.00 ns, 46.2289 ns/op
WorkloadResult 100: 16777216 op, 801580700.00 ns, 47.7779 ns/op
GC: 171 0 0 536870912 16777216
Threading: 2 0 16777216
// AfterAll
// Benchmark Process 14976 has exited with code 0
Mean = 43.165 ns, StdErr = 0.429 ns (0.99%), N = 100, StdDev = 4.287 ns
Min = 34.530 ns, Q1 = 41.126 ns, Median = 42.782 ns, Q3 = 47.191 ns, Max = 49.389 ns
IQR = 6.065 ns, LowerFence = 32.029 ns, UpperFence = 56.289 ns
ConfidenceInterval = [41.711 ns; 44.619 ns] (CI 99.9%), Margin = 1.454 ns (3.37% of Mean)
Skewness = -0.39, Kurtosis = 2.22, MValue = 3.76
// **************************
// Benchmark: RankTests.Rank: DefaultJob [n=100, k=6, kCombination=Int32[6]]
// *** Execute ***
// Launch: 1 / 1
// Execute: dotnet "45ee11c8-1f85-49bd-9a64-9c03db6b4199.dll" --benchmarkName "PerformanceTests.CombinatorialNumberSystems.RankTests.Rank(n: 100, k: 6, kCombination: [11, 16, 23, 34, 42, ...])" --job "Default" --benchmarkId 4 in C:\dev\LottoGenerator\LG.Tests.BenchmarkDotNet\bin\Release\netcoreapp3.1\45ee11c8-1f85-49bd-9a64-9c03db6b4199\bin\Release\netcoreapp3.1
// BeforeAnythingElse
// Benchmark Process Environment Information:
// Runtime=.NET Core 3.1.13 (CoreCLR 4.700.21.11102, CoreFX 4.700.21.11602), X64 RyuJIT
// GC=Concurrent Workstation
// Job: DefaultJob
OverheadJitting 1: 1 op, 362900.00 ns, 362.9000 us/op
WorkloadJitting 1: 1 op, 2140100.00 ns, 2.1401 ms/op
OverheadJitting 2: 16 op, 641500.00 ns, 40.0938 us/op
WorkloadJitting 2: 16 op, 609900.00 ns, 38.1187 us/op
WorkloadPilot 1: 16 op, 4200.00 ns, 262.5000 ns/op
WorkloadPilot 2: 32 op, 5100.00 ns, 159.3750 ns/op
WorkloadPilot 3: 64 op, 7000.00 ns, 109.3750 ns/op
WorkloadPilot 4: 128 op, 9900.00 ns, 77.3438 ns/op
WorkloadPilot 5: 256 op, 18900.00 ns, 73.8281 ns/op
WorkloadPilot 6: 512 op, 31300.00 ns, 61.1328 ns/op
WorkloadPilot 7: 1024 op, 62600.00 ns, 61.1328 ns/op
WorkloadPilot 8: 2048 op, 125200.00 ns, 61.1328 ns/op
WorkloadPilot 9: 4096 op, 304800.00 ns, 74.4141 ns/op
WorkloadPilot 10: 8192 op, 629500.00 ns, 76.8433 ns/op
WorkloadPilot 11: 16384 op, 1250400.00 ns, 76.3184 ns/op
WorkloadPilot 12: 32768 op, 2539000.00 ns, 77.4841 ns/op
WorkloadPilot 13: 65536 op, 4954700.00 ns, 75.6027 ns/op
WorkloadPilot 14: 131072 op, 8231900.00 ns, 62.8044 ns/op
WorkloadPilot 15: 262144 op, 16120200.00 ns, 61.4937 ns/op
WorkloadPilot 16: 524288 op, 32829500.00 ns, 62.6173 ns/op
WorkloadPilot 17: 1048576 op, 64553400.00 ns, 61.5629 ns/op
WorkloadPilot 18: 2097152 op, 132059400.00 ns, 62.9708 ns/op
WorkloadPilot 19: 4194304 op, 281335500.00 ns, 67.0756 ns/op
WorkloadPilot 20: 8388608 op, 634164100.00 ns, 75.5983 ns/op
OverheadWarmup 1: 8388608 op, 13662300.00 ns, 1.6287 ns/op
OverheadWarmup 2: 8388608 op, 13023200.00 ns, 1.5525 ns/op
OverheadWarmup 3: 8388608 op, 14127700.00 ns, 1.6842 ns/op
OverheadWarmup 4: 8388608 op, 13838300.00 ns, 1.6497 ns/op
OverheadWarmup 5: 8388608 op, 12388600.00 ns, 1.4768 ns/op
OverheadWarmup 6: 8388608 op, 13015300.00 ns, 1.5515 ns/op
OverheadWarmup 7: 8388608 op, 13132400.00 ns, 1.5655 ns/op
OverheadWarmup 8: 8388608 op, 13484500.00 ns, 1.6075 ns/op
OverheadWarmup 9: 8388608 op, 13750600.00 ns, 1.6392 ns/op
OverheadWarmup 10: 8388608 op, 13923500.00 ns, 1.6598 ns/op
OverheadActual 1: 8388608 op, 14120900.00 ns, 1.6833 ns/op
OverheadActual 2: 8388608 op, 12774500.00 ns, 1.5228 ns/op
OverheadActual 3: 8388608 op, 13322800.00 ns, 1.5882 ns/op
OverheadActual 4: 8388608 op, 13128500.00 ns, 1.5650 ns/op
OverheadActual 5: 8388608 op, 13186900.00 ns, 1.5720 ns/op
OverheadActual 6: 8388608 op, 13356500.00 ns, 1.5922 ns/op
OverheadActual 7: 8388608 op, 13009400.00 ns, 1.5508 ns/op
OverheadActual 8: 8388608 op, 12967000.00 ns, 1.5458 ns/op
OverheadActual 9: 8388608 op, 13626300.00 ns, 1.6244 ns/op
OverheadActual 10: 8388608 op, 13215300.00 ns, 1.5754 ns/op
OverheadActual 11: 8388608 op, 13644700.00 ns, 1.6266 ns/op
OverheadActual 12: 8388608 op, 13339700.00 ns, 1.5902 ns/op
OverheadActual 13: 8388608 op, 12307400.00 ns, 1.4672 ns/op
OverheadActual 14: 8388608 op, 12376700.00 ns, 1.4754 ns/op
OverheadActual 15: 8388608 op, 12697400.00 ns, 1.5136 ns/op
WorkloadWarmup 1: 8388608 op, 546028400.00 ns, 65.0917 ns/op
WorkloadWarmup 2: 8388608 op, 512995100.00 ns, 61.1538 ns/op
WorkloadWarmup 3: 8388608 op, 569933300.00 ns, 67.9413 ns/op
WorkloadWarmup 4: 8388608 op, 583858300.00 ns, 69.6013 ns/op
WorkloadWarmup 5: 8388608 op, 588199300.00 ns, 70.1188 ns/op
WorkloadWarmup 6: 8388608 op, 568579400.00 ns, 67.7799 ns/op
WorkloadWarmup 7: 8388608 op, 590710600.00 ns, 70.4182 ns/op
WorkloadWarmup 8: 8388608 op, 594363800.00 ns, 70.8537 ns/op
WorkloadWarmup 9: 8388608 op, 633778800.00 ns, 75.5523 ns/op
WorkloadWarmup 10: 8388608 op, 567116700.00 ns, 67.6056 ns/op
// BeforeActualRun
WorkloadActual 1: 8388608 op, 613574100.00 ns, 73.1437 ns/op
WorkloadActual 2: 8388608 op, 605864900.00 ns, 72.2247 ns/op
WorkloadActual 3: 8388608 op, 551736700.00 ns, 65.7721 ns/op
WorkloadActual 4: 8388608 op, 586894800.00 ns, 69.9633 ns/op
WorkloadActual 5: 8388608 op, 585344200.00 ns, 69.7785 ns/op
WorkloadActual 6: 8388608 op, 597863400.00 ns, 71.2709 ns/op
WorkloadActual 7: 8388608 op, 525091300.00 ns, 62.5958 ns/op
WorkloadActual 8: 8388608 op, 577111600.00 ns, 68.7971 ns/op
WorkloadActual 9: 8388608 op, 617302600.00 ns, 73.5882 ns/op
WorkloadActual 10: 8388608 op, 564177400.00 ns, 67.2552 ns/op
WorkloadActual 11: 8388608 op, 573472200.00 ns, 68.3632 ns/op
WorkloadActual 12: 8388608 op, 574665600.00 ns, 68.5055 ns/op
WorkloadActual 13: 8388608 op, 657331700.00 ns, 78.3600 ns/op
WorkloadActual 14: 8388608 op, 690659600.00 ns, 82.3330 ns/op
WorkloadActual 15: 8388608 op, 581780000.00 ns, 69.3536 ns/op
WorkloadActual 16: 8388608 op, 605785400.00 ns, 72.2152 ns/op
WorkloadActual 17: 8388608 op, 573904800.00 ns, 68.4148 ns/op
WorkloadActual 18: 8388608 op, 568242700.00 ns, 67.7398 ns/op
WorkloadActual 19: 8388608 op, 593322800.00 ns, 70.7296 ns/op
WorkloadActual 20: 8388608 op, 589325600.00 ns, 70.2531 ns/op
WorkloadActual 21: 8388608 op, 657727300.00 ns, 78.4072 ns/op
WorkloadActual 22: 8388608 op, 607476400.00 ns, 72.4168 ns/op
WorkloadActual 23: 8388608 op, 606206600.00 ns, 72.2655 ns/op
WorkloadActual 24: 8388608 op, 595987300.00 ns, 71.0472 ns/op
WorkloadActual 25: 8388608 op, 614068400.00 ns, 73.2027 ns/op
WorkloadActual 26: 8388608 op, 590241700.00 ns, 70.3623 ns/op
WorkloadActual 27: 8388608 op, 596970700.00 ns, 71.1645 ns/op
WorkloadActual 28: 8388608 op, 651380700.00 ns, 77.6506 ns/op
WorkloadActual 29: 8388608 op, 593334300.00 ns, 70.7310 ns/op
WorkloadActual 30: 8388608 op, 580649700.00 ns, 69.2188 ns/op
WorkloadActual 31: 8388608 op, 563610600.00 ns, 67.1876 ns/op
WorkloadActual 32: 8388608 op, 593088200.00 ns, 70.7016 ns/op
WorkloadActual 33: 8388608 op, 603586800.00 ns, 71.9532 ns/op
WorkloadActual 34: 8388608 op, 598312200.00 ns, 71.3244 ns/op
WorkloadActual 35: 8388608 op, 588586600.00 ns, 70.1650 ns/op
WorkloadActual 36: 8388608 op, 579872300.00 ns, 69.1262 ns/op
WorkloadActual 37: 8388608 op, 588006600.00 ns, 70.0958 ns/op
WorkloadActual 38: 8388608 op, 600988500.00 ns, 71.6434 ns/op
WorkloadActual 39: 8388608 op, 602002400.00 ns, 71.7643 ns/op
// AfterActualRun
WorkloadResult 1: 8388608 op, 600387200.00 ns, 71.5717 ns/op
WorkloadResult 2: 8388608 op, 592678000.00 ns, 70.6527 ns/op
WorkloadResult 3: 8388608 op, 538549800.00 ns, 64.2001 ns/op
WorkloadResult 4: 8388608 op, 573707900.00 ns, 68.3913 ns/op
WorkloadResult 5: 8388608 op, 572157300.00 ns, 68.2065 ns/op
WorkloadResult 6: 8388608 op, 584676500.00 ns, 69.6989 ns/op
WorkloadResult 7: 8388608 op, 511904400.00 ns, 61.0238 ns/op
WorkloadResult 8: 8388608 op, 563924700.00 ns, 67.2251 ns/op
WorkloadResult 9: 8388608 op, 604115700.00 ns, 72.0162 ns/op
WorkloadResult 10: 8388608 op, 550990500.00 ns, 65.6832 ns/op
WorkloadResult 11: 8388608 op, 560285300.00 ns, 66.7912 ns/op
WorkloadResult 12: 8388608 op, 561478700.00 ns, 66.9335 ns/op
WorkloadResult 13: 8388608 op, 568593100.00 ns, 67.7816 ns/op
WorkloadResult 14: 8388608 op, 592598500.00 ns, 70.6432 ns/op
WorkloadResult 15: 8388608 op, 560717900.00 ns, 66.8428 ns/op
WorkloadResult 16: 8388608 op, 555055800.00 ns, 66.1678 ns/op
WorkloadResult 17: 8388608 op, 580135900.00 ns, 69.1576 ns/op
WorkloadResult 18: 8388608 op, 576138700.00 ns, 68.6811 ns/op
WorkloadResult 19: 8388608 op, 594289500.00 ns, 70.8448 ns/op
WorkloadResult 20: 8388608 op, 593019700.00 ns, 70.6935 ns/op
WorkloadResult 21: 8388608 op, 582800400.00 ns, 69.4752 ns/op
WorkloadResult 22: 8388608 op, 600881500.00 ns, 71.6307 ns/op
WorkloadResult 23: 8388608 op, 577054800.00 ns, 68.7903 ns/op
WorkloadResult 24: 8388608 op, 583783800.00 ns, 69.5925 ns/op
WorkloadResult 25: 8388608 op, 580147400.00 ns, 69.1590 ns/op
WorkloadResult 26: 8388608 op, 567462800.00 ns, 67.6468 ns/op
WorkloadResult 27: 8388608 op, 550423700.00 ns, 65.6156 ns/op
WorkloadResult 28: 8388608 op, 579901300.00 ns, 69.1296 ns/op
WorkloadResult 29: 8388608 op, 590399900.00 ns, 70.3812 ns/op
WorkloadResult 30: 8388608 op, 585125300.00 ns, 69.7524 ns/op
WorkloadResult 31: 8388608 op, 575399700.00 ns, 68.5930 ns/op
WorkloadResult 32: 8388608 op, 566685400.00 ns, 67.5542 ns/op
WorkloadResult 33: 8388608 op, 574819700.00 ns, 68.5238 ns/op
WorkloadResult 34: 8388608 op, 587801600.00 ns, 70.0714 ns/op
WorkloadResult 35: 8388608 op, 588815500.00 ns, 70.1923 ns/op
GC: 213 0 0 671088640 8388608
Threading: 2 0 8388608
// AfterAll
// Benchmark Process 6076 has exited with code 0
Mean = 68.552 ns, StdErr = 0.383 ns (0.56%), N = 35, StdDev = 2.266 ns
Min = 61.024 ns, Q1 = 67.390 ns, Median = 68.790 ns, Q3 = 70.132 ns, Max = 72.016 ns
IQR = 2.742 ns, LowerFence = 63.276 ns, UpperFence = 74.245 ns
ConfidenceInterval = [67.173 ns; 69.931 ns] (CI 99.9%), Margin = 1.379 ns (2.01% of Mean)
Skewness = -1.06, Kurtosis = 4.56, MValue = 2
// **************************
// Benchmark: RankTests.FastRank: DefaultJob [n=100, k=6, kCombination=Int32[6]]
// *** Execute ***
// Launch: 1 / 1
// Execute: dotnet "45ee11c8-1f85-49bd-9a64-9c03db6b4199.dll" --benchmarkName "PerformanceTests.CombinatorialNumberSystems.RankTests.FastRank(n: 100, k: 6, kCombination: [11, 16, 23, 34, 42, ...])" --job "Default" --benchmarkId 5 in C:\dev\LottoGenerator\LG.Tests.BenchmarkDotNet\bin\Release\netcoreapp3.1\45ee11c8-1f85-49bd-9a64-9c03db6b4199\bin\Release\netcoreapp3.1
// BeforeAnythingElse
// Benchmark Process Environment Information:
// Runtime=.NET Core 3.1.13 (CoreCLR 4.700.21.11102, CoreFX 4.700.21.11602), X64 RyuJIT
// GC=Concurrent Workstation
// Job: DefaultJob
OverheadJitting 1: 1 op, 346800.00 ns, 346.8000 us/op
WorkloadJitting 1: 1 op, 1850500.00 ns, 1.8505 ms/op
OverheadJitting 2: 16 op, 568500.00 ns, 35.5312 us/op
WorkloadJitting 2: 16 op, 561300.00 ns, 35.0812 us/op
WorkloadPilot 1: 16 op, 4700.00 ns, 293.7500 ns/op
WorkloadPilot 2: 32 op, 2600.00 ns, 81.2500 ns/op
WorkloadPilot 3: 64 op, 3300.00 ns, 51.5625 ns/op
WorkloadPilot 4: 128 op, 6600.00 ns, 51.5625 ns/op
WorkloadPilot 5: 256 op, 11100.00 ns, 43.3594 ns/op
WorkloadPilot 6: 512 op, 23400.00 ns, 45.7031 ns/op
WorkloadPilot 7: 1024 op, 40300.00 ns, 39.3555 ns/op
WorkloadPilot 8: 2048 op, 82900.00 ns, 40.4785 ns/op
WorkloadPilot 9: 4096 op, 157000.00 ns, 38.3301 ns/op
WorkloadPilot 10: 8192 op, 342700.00 ns, 41.8335 ns/op
WorkloadPilot 11: 16384 op, 702100.00 ns, 42.8528 ns/op
WorkloadPilot 12: 32768 op, 1425900.00 ns, 43.5150 ns/op
WorkloadPilot 13: 65536 op, 2988300.00 ns, 45.5978 ns/op
WorkloadPilot 14: 131072 op, 5881400.00 ns, 44.8715 ns/op
WorkloadPilot 15: 262144 op, 10121400.00 ns, 38.6101 ns/op
WorkloadPilot 16: 524288 op, 21025700.00 ns, 40.1033 ns/op
WorkloadPilot 17: 1048576 op, 41536700.00 ns, 39.6125 ns/op
WorkloadPilot 18: 2097152 op, 89332900.00 ns, 42.5972 ns/op
WorkloadPilot 19: 4194304 op, 167898000.00 ns, 40.0300 ns/op
WorkloadPilot 20: 8388608 op, 412957000.00 ns, 49.2283 ns/op
WorkloadPilot 21: 16777216 op, 761218200.00 ns, 45.3721 ns/op
OverheadWarmup 1: 16777216 op, 26941600.00 ns, 1.6058 ns/op
OverheadWarmup 2: 16777216 op, 25573200.00 ns, 1.5243 ns/op
OverheadWarmup 3: 16777216 op, 25781000.00 ns, 1.5367 ns/op
OverheadWarmup 4: 16777216 op, 26287100.00 ns, 1.5668 ns/op
OverheadWarmup 5: 16777216 op, 26825800.00 ns, 1.5989 ns/op
OverheadWarmup 6: 16777216 op, 26341700.00 ns, 1.5701 ns/op
OverheadWarmup 7: 16777216 op, 26423100.00 ns, 1.5749 ns/op
OverheadWarmup 8: 16777216 op, 25801500.00 ns, 1.5379 ns/op
OverheadActual 1: 16777216 op, 29525800.00 ns, 1.7599 ns/op
OverheadActual 2: 16777216 op, 29165400.00 ns, 1.7384 ns/op
OverheadActual 3: 16777216 op, 29164300.00 ns, 1.7383 ns/op
OverheadActual 4: 16777216 op, 30745100.00 ns, 1.8326 ns/op
OverheadActual 5: 16777216 op, 29086000.00 ns, 1.7337 ns/op
OverheadActual 6: 16777216 op, 29071700.00 ns, 1.7328 ns/op
OverheadActual 7: 16777216 op, 27746600.00 ns, 1.6538 ns/op
OverheadActual 8: 16777216 op, 24766700.00 ns, 1.4762 ns/op
OverheadActual 9: 16777216 op, 25094600.00 ns, 1.4958 ns/op
OverheadActual 10: 16777216 op, 24832400.00 ns, 1.4801 ns/op
OverheadActual 11: 16777216 op, 24830900.00 ns, 1.4800 ns/op
OverheadActual 12: 16777216 op, 24657700.00 ns, 1.4697 ns/op
OverheadActual 13: 16777216 op, 24583700.00 ns, 1.4653 ns/op
OverheadActual 14: 16777216 op, 24670800.00 ns, 1.4705 ns/op
OverheadActual 15: 16777216 op, 24737500.00 ns, 1.4745 ns/op
OverheadActual 16: 16777216 op, 24999200.00 ns, 1.4901 ns/op
OverheadActual 17: 16777216 op, 24840200.00 ns, 1.4806 ns/op
OverheadActual 18: 16777216 op, 26350200.00 ns, 1.5706 ns/op
OverheadActual 19: 16777216 op, 25120000.00 ns, 1.4973 ns/op
OverheadActual 20: 16777216 op, 24582000.00 ns, 1.4652 ns/op
WorkloadWarmup 1: 16777216 op, 723699200.00 ns, 43.1358 ns/op
WorkloadWarmup 2: 16777216 op, 713094500.00 ns, 42.5037 ns/op
WorkloadWarmup 3: 16777216 op, 784858500.00 ns, 46.7812 ns/op
WorkloadWarmup 4: 16777216 op, 736684300.00 ns, 43.9098 ns/op
WorkloadWarmup 5: 16777216 op, 784654400.00 ns, 46.7690 ns/op
WorkloadWarmup 6: 16777216 op, 749806600.00 ns, 44.6920 ns/op
// BeforeActualRun
WorkloadActual 1: 16777216 op, 728624500.00 ns, 43.4294 ns/op
WorkloadActual 2: 16777216 op, 722097800.00 ns, 43.0404 ns/op
WorkloadActual 3: 16777216 op, 694599200.00 ns, 41.4013 ns/op
WorkloadActual 4: 16777216 op, 698924800.00 ns, 41.6592 ns/op
WorkloadActual 5: 16777216 op, 774159000.00 ns, 46.1435 ns/op
WorkloadActual 6: 16777216 op, 789984700.00 ns, 47.0868 ns/op
WorkloadActual 7: 16777216 op, 781991900.00 ns, 46.6103 ns/op
WorkloadActual 8: 16777216 op, 739772500.00 ns, 44.0939 ns/op
WorkloadActual 9: 16777216 op, 740997300.00 ns, 44.1669 ns/op
WorkloadActual 10: 16777216 op, 802763400.00 ns, 47.8484 ns/op
WorkloadActual 11: 16777216 op, 739020800.00 ns, 44.0491 ns/op
WorkloadActual 12: 16777216 op, 724383300.00 ns, 43.1766 ns/op
WorkloadActual 13: 16777216 op, 728682900.00 ns, 43.4329 ns/op
WorkloadActual 14: 16777216 op, 738472300.00 ns, 44.0164 ns/op
WorkloadActual 15: 16777216 op, 738802100.00 ns, 44.0360 ns/op
WorkloadActual 16: 16777216 op, 692435500.00 ns, 41.2724 ns/op
WorkloadActual 17: 16777216 op, 716513400.00 ns, 42.7075 ns/op
WorkloadActual 18: 16777216 op, 734659900.00 ns, 43.7891 ns/op
WorkloadActual 19: 16777216 op, 729213800.00 ns, 43.4645 ns/op
WorkloadActual 20: 16777216 op, 753078300.00 ns, 44.8870 ns/op
WorkloadActual 21: 16777216 op, 721459900.00 ns, 43.0024 ns/op
WorkloadActual 22: 16777216 op, 717999200.00 ns, 42.7961 ns/op
WorkloadActual 23: 16777216 op, 707354900.00 ns, 42.1616 ns/op
WorkloadActual 24: 16777216 op, 768580000.00 ns, 45.8109 ns/op
WorkloadActual 25: 16777216 op, 719203400.00 ns, 42.8679 ns/op
WorkloadActual 26: 16777216 op, 752558400.00 ns, 44.8560 ns/op
WorkloadActual 27: 16777216 op, 747879800.00 ns, 44.5771 ns/op
WorkloadActual 28: 16777216 op, 743895200.00 ns, 44.3396 ns/op
WorkloadActual 29: 16777216 op, 729995000.00 ns, 43.5111 ns/op
WorkloadActual 30: 16777216 op, 759612100.00 ns, 45.2764 ns/op
WorkloadActual 31: 16777216 op, 732005600.00 ns, 43.6309 ns/op
WorkloadActual 32: 16777216 op, 730880700.00 ns, 43.5639 ns/op
WorkloadActual 33: 16777216 op, 663926300.00 ns, 39.5731 ns/op
WorkloadActual 34: 16777216 op, 792670500.00 ns, 47.2468 ns/op
WorkloadActual 35: 16777216 op, 862565100.00 ns, 51.4129 ns/op
WorkloadActual 36: 16777216 op, 731107900.00 ns, 43.5774 ns/op
WorkloadActual 37: 16777216 op, 836848200.00 ns, 49.8800 ns/op
WorkloadActual 38: 16777216 op, 825061600.00 ns, 49.1775 ns/op
WorkloadActual 39: 16777216 op, 769364000.00 ns, 45.8577 ns/op
WorkloadActual 40: 16777216 op, 663492800.00 ns, 39.5473 ns/op
WorkloadActual 41: 16777216 op, 766517000.00 ns, 45.6880 ns/op
WorkloadActual 42: 16777216 op, 706839800.00 ns, 42.1309 ns/op
WorkloadActual 43: 16777216 op, 737526300.00 ns, 43.9600 ns/op
WorkloadActual 44: 16777216 op, 838831100.00 ns, 49.9982 ns/op
WorkloadActual 45: 16777216 op, 762939900.00 ns, 45.4748 ns/op
WorkloadActual 46: 16777216 op, 889375100.00 ns, 53.0109 ns/op
WorkloadActual 47: 16777216 op, 891203200.00 ns, 53.1199 ns/op
WorkloadActual 48: 16777216 op, 893788400.00 ns, 53.2739 ns/op
WorkloadActual 49: 16777216 op, 836158100.00 ns, 49.8389 ns/op
WorkloadActual 50: 16777216 op, 720923500.00 ns, 42.9704 ns/op
WorkloadActual 51: 16777216 op, 717198600.00 ns, 42.7484 ns/op
WorkloadActual 52: 16777216 op, 760206500.00 ns, 45.3118 ns/op
WorkloadActual 53: 16777216 op, 732306000.00 ns, 43.6488 ns/op
WorkloadActual 54: 16777216 op, 779004400.00 ns, 46.4323 ns/op
WorkloadActual 55: 16777216 op, 817796400.00 ns, 48.7445 ns/op
WorkloadActual 56: 16777216 op, 863896800.00 ns, 51.4923 ns/op
WorkloadActual 57: 16777216 op, 710714400.00 ns, 42.3619 ns/op
WorkloadActual 58: 16777216 op, 726569600.00 ns, 43.3069 ns/op
WorkloadActual 59: 16777216 op, 749760300.00 ns, 44.6892 ns/op
WorkloadActual 60: 16777216 op, 833816100.00 ns, 49.6993 ns/op
WorkloadActual 61: 16777216 op, 719497400.00 ns, 42.8854 ns/op
WorkloadActual 62: 16777216 op, 844916700.00 ns, 50.3610 ns/op
WorkloadActual 63: 16777216 op, 838347900.00 ns, 49.9694 ns/op
WorkloadActual 64: 16777216 op, 771344200.00 ns, 45.9757 ns/op
WorkloadActual 65: 16777216 op, 839199600.00 ns, 50.0202 ns/op
WorkloadActual 66: 16777216 op, 722061800.00 ns, 43.0382 ns/op
WorkloadActual 67: 16777216 op, 745488700.00 ns, 44.4346 ns/op
WorkloadActual 68: 16777216 op, 764915300.00 ns, 45.5925 ns/op
WorkloadActual 69: 16777216 op, 867621400.00 ns, 51.7143 ns/op
WorkloadActual 70: 16777216 op, 762791900.00 ns, 45.4659 ns/op
WorkloadActual 71: 16777216 op, 781134000.00 ns, 46.5592 ns/op
WorkloadActual 72: 16777216 op, 840059700.00 ns, 50.0715 ns/op
WorkloadActual 73: 16777216 op, 821558900.00 ns, 48.9687 ns/op
WorkloadActual 74: 16777216 op, 889429600.00 ns, 53.0141 ns/op
WorkloadActual 75: 16777216 op, 728541100.00 ns, 43.4244 ns/op
WorkloadActual 76: 16777216 op, 785032900.00 ns, 46.7916 ns/op
WorkloadActual 77: 16777216 op, 777351700.00 ns, 46.3338 ns/op
WorkloadActual 78: 16777216 op, 756070400.00 ns, 45.0653 ns/op
WorkloadActual 79: 16777216 op, 788594600.00 ns, 47.0039 ns/op
WorkloadActual 80: 16777216 op, 888806600.00 ns, 52.9770 ns/op
WorkloadActual 81: 16777216 op, 682258400.00 ns, 40.6658 ns/op
WorkloadActual 82: 16777216 op, 796686600.00 ns, 47.4862 ns/op
WorkloadActual 83: 16777216 op, 706652900.00 ns, 42.1198 ns/op
WorkloadActual 84: 16777216 op, 602959600.00 ns, 35.9392 ns/op
WorkloadActual 85: 16777216 op, 672403400.00 ns, 40.0784 ns/op
WorkloadActual 86: 16777216 op, 741504000.00 ns, 44.1971 ns/op
WorkloadActual 87: 16777216 op, 732822000.00 ns, 43.6796 ns/op
WorkloadActual 88: 16777216 op, 707398400.00 ns, 42.1642 ns/op
WorkloadActual 89: 16777216 op, 830197800.00 ns, 49.4836 ns/op
WorkloadActual 90: 16777216 op, 746842900.00 ns, 44.5153 ns/op
WorkloadActual 91: 16777216 op, 729231900.00 ns, 43.4656 ns/op
WorkloadActual 92: 16777216 op, 754876600.00 ns, 44.9942 ns/op
WorkloadActual 93: 16777216 op, 732675200.00 ns, 43.6708 ns/op
WorkloadActual 94: 16777216 op, 768067000.00 ns, 45.7804 ns/op
WorkloadActual 95: 16777216 op, 731591700.00 ns, 43.6063 ns/op
WorkloadActual 96: 16777216 op, 804680300.00 ns, 47.9627 ns/op
WorkloadActual 97: 16777216 op, 749724900.00 ns, 44.6871 ns/op
WorkloadActual 98: 16777216 op, 736718500.00 ns, 43.9118 ns/op
WorkloadActual 99: 16777216 op, 734997600.00 ns, 43.8093 ns/op
WorkloadActual 100: 16777216 op, 717676300.00 ns, 42.7768 ns/op
// AfterActualRun
WorkloadResult 1: 16777216 op, 703577600.00 ns, 41.9365 ns/op
WorkloadResult 2: 16777216 op, 697050900.00 ns, 41.5475 ns/op
WorkloadResult 3: 16777216 op, 669552300.00 ns, 39.9084 ns/op
WorkloadResult 4: 16777216 op, 673877900.00 ns, 40.1663 ns/op
WorkloadResult 5: 16777216 op, 749112100.00 ns, 44.6506 ns/op
WorkloadResult 6: 16777216 op, 764937800.00 ns, 45.5938 ns/op
WorkloadResult 7: 16777216 op, 756945000.00 ns, 45.1174 ns/op
WorkloadResult 8: 16777216 op, 714725600.00 ns, 42.6010 ns/op
WorkloadResult 9: 16777216 op, 715950400.00 ns, 42.6740 ns/op
WorkloadResult 10: 16777216 op, 777716500.00 ns, 46.3555 ns/op
WorkloadResult 11: 16777216 op, 713973900.00 ns, 42.5562 ns/op
WorkloadResult 12: 16777216 op, 699336400.00 ns, 41.6837 ns/op
WorkloadResult 13: 16777216 op, 703636000.00 ns, 41.9400 ns/op
WorkloadResult 14: 16777216 op, 713425400.00 ns, 42.5235 ns/op
WorkloadResult 15: 16777216 op, 713755200.00 ns, 42.5431 ns/op
WorkloadResult 16: 16777216 op, 667388600.00 ns, 39.7795 ns/op
WorkloadResult 17: 16777216 op, 691466500.00 ns, 41.2146 ns/op
WorkloadResult 18: 16777216 op, 709613000.00 ns, 42.2962 ns/op
WorkloadResult 19: 16777216 op, 704166900.00 ns, 41.9716 ns/op
WorkloadResult 20: 16777216 op, 728031400.00 ns, 43.3941 ns/op
WorkloadResult 21: 16777216 op, 696413000.00 ns, 41.5094 ns/op
WorkloadResult 22: 16777216 op, 692952300.00 ns, 41.3032 ns/op
WorkloadResult 23: 16777216 op, 682308000.00 ns, 40.6687 ns/op
WorkloadResult 24: 16777216 op, 743533100.00 ns, 44.3180 ns/op
WorkloadResult 25: 16777216 op, 694156500.00 ns, 41.3750 ns/op
WorkloadResult 26: 16777216 op, 727511500.00 ns, 43.3631 ns/op
WorkloadResult 27: 16777216 op, 722832900.00 ns, 43.0842 ns/op
WorkloadResult 28: 16777216 op, 718848300.00 ns, 42.8467 ns/op
WorkloadResult 29: 16777216 op, 704948100.00 ns, 42.0182 ns/op
WorkloadResult 30: 16777216 op, 734565200.00 ns, 43.7835 ns/op
WorkloadResult 31: 16777216 op, 706958700.00 ns, 42.1380 ns/op
WorkloadResult 32: 16777216 op, 705833800.00 ns, 42.0710 ns/op
WorkloadResult 33: 16777216 op, 638879400.00 ns, 38.0802 ns/op
WorkloadResult 34: 16777216 op, 767623600.00 ns, 45.7539 ns/op
WorkloadResult 35: 16777216 op, 837518200.00 ns, 49.9200 ns/op
WorkloadResult 36: 16777216 op, 706061000.00 ns, 42.0845 ns/op
WorkloadResult 37: 16777216 op, 811801300.00 ns, 48.3871 ns/op
WorkloadResult 38: 16777216 op, 800014700.00 ns, 47.6846 ns/op
WorkloadResult 39: 16777216 op, 744317100.00 ns, 44.3648 ns/op
WorkloadResult 40: 16777216 op, 638445900.00 ns, 38.0543 ns/op
WorkloadResult 41: 16777216 op, 741470100.00 ns, 44.1951 ns/op
WorkloadResult 42: 16777216 op, 681792900.00 ns, 40.6380 ns/op
WorkloadResult 43: 16777216 op, 712479400.00 ns, 42.4671 ns/op
WorkloadResult 44: 16777216 op, 813784200.00 ns, 48.5053 ns/op
WorkloadResult 45: 16777216 op, 737893000.00 ns, 43.9819 ns/op
WorkloadResult 46: 16777216 op, 811111200.00 ns, 48.3460 ns/op
WorkloadResult 47: 16777216 op, 695876600.00 ns, 41.4775 ns/op
WorkloadResult 48: 16777216 op, 692151700.00 ns, 41.2555 ns/op
WorkloadResult 49: 16777216 op, 735159600.00 ns, 43.8189 ns/op
WorkloadResult 50: 16777216 op, 707259100.00 ns, 42.1559 ns/op
WorkloadResult 51: 16777216 op, 753957500.00 ns, 44.9394 ns/op
WorkloadResult 52: 16777216 op, 792749500.00 ns, 47.2516 ns/op
WorkloadResult 53: 16777216 op, 838849900.00 ns, 49.9994 ns/op
WorkloadResult 54: 16777216 op, 685667500.00 ns, 40.8690 ns/op
WorkloadResult 55: 16777216 op, 701522700.00 ns, 41.8140 ns/op
WorkloadResult 56: 16777216 op, 724713400.00 ns, 43.1963 ns/op
WorkloadResult 57: 16777216 op, 808769200.00 ns, 48.2064 ns/op
WorkloadResult 58: 16777216 op, 694450500.00 ns, 41.3925 ns/op
WorkloadResult 59: 16777216 op, 819869800.00 ns, 48.8680 ns/op
WorkloadResult 60: 16777216 op, 813301000.00 ns, 48.4765 ns/op
WorkloadResult 61: 16777216 op, 746297300.00 ns, 44.4828 ns/op
WorkloadResult 62: 16777216 op, 814152700.00 ns, 48.5273 ns/op
WorkloadResult 63: 16777216 op, 697014900.00 ns, 41.5453 ns/op
WorkloadResult 64: 16777216 op, 720441800.00 ns, 42.9417 ns/op
WorkloadResult 65: 16777216 op, 739868400.00 ns, 44.0996 ns/op
WorkloadResult 66: 16777216 op, 842574500.00 ns, 50.2214 ns/op
WorkloadResult 67: 16777216 op, 737745000.00 ns, 43.9730 ns/op
WorkloadResult 68: 16777216 op, 756087100.00 ns, 45.0663 ns/op
WorkloadResult 69: 16777216 op, 815012800.00 ns, 48.5785 ns/op
WorkloadResult 70: 16777216 op, 796512000.00 ns, 47.4758 ns/op
WorkloadResult 71: 16777216 op, 703494200.00 ns, 41.9315 ns/op
WorkloadResult 72: 16777216 op, 759986000.00 ns, 45.2987 ns/op
WorkloadResult 73: 16777216 op, 752304800.00 ns, 44.8409 ns/op
WorkloadResult 74: 16777216 op, 731023500.00 ns, 43.5724 ns/op
WorkloadResult 75: 16777216 op, 763547700.00 ns, 45.5110 ns/op
WorkloadResult 76: 16777216 op, 657211500.00 ns, 39.1729 ns/op
WorkloadResult 77: 16777216 op, 771639700.00 ns, 45.9933 ns/op
WorkloadResult 78: 16777216 op, 681606000.00 ns, 40.6269 ns/op
WorkloadResult 79: 16777216 op, 577912700.00 ns, 34.4463 ns/op
WorkloadResult 80: 16777216 op, 647356500.00 ns, 38.5855 ns/op
WorkloadResult 81: 16777216 op, 716457100.00 ns, 42.7042 ns/op
WorkloadResult 82: 16777216 op, 707775100.00 ns, 42.1867 ns/op
WorkloadResult 83: 16777216 op, 682351500.00 ns, 40.6713 ns/op
WorkloadResult 84: 16777216 op, 805150900.00 ns, 47.9907 ns/op
WorkloadResult 85: 16777216 op, 721796000.00 ns, 43.0224 ns/op
WorkloadResult 86: 16777216 op, 704185000.00 ns, 41.9727 ns/op
WorkloadResult 87: 16777216 op, 729829700.00 ns, 43.5012 ns/op
WorkloadResult 88: 16777216 op, 707628300.00 ns, 42.1779 ns/op
WorkloadResult 89: 16777216 op, 743020100.00 ns, 44.2874 ns/op
WorkloadResult 90: 16777216 op, 706544800.00 ns, 42.1134 ns/op
WorkloadResult 91: 16777216 op, 779633400.00 ns, 46.4698 ns/op
WorkloadResult 92: 16777216 op, 724678000.00 ns, 43.1942 ns/op
WorkloadResult 93: 16777216 op, 711671600.00 ns, 42.4189 ns/op
WorkloadResult 94: 16777216 op, 709950700.00 ns, 42.3164 ns/op
WorkloadResult 95: 16777216 op, 692629400.00 ns, 41.2839 ns/op
GC: 171 0 0 536870912 16777216
Threading: 2 0 16777216
// AfterAll
// Benchmark Process 14836 has exited with code 0
Mean = 43.456 ns, StdErr = 0.299 ns (0.69%), N = 95, StdDev = 2.918 ns
Min = 34.446 ns, Q1 = 41.749 ns, Median = 42.704 ns, Q3 = 45.003 ns, Max = 50.221 ns
IQR = 3.254 ns, LowerFence = 36.868 ns, UpperFence = 49.884 ns
ConfidenceInterval = [42.439 ns; 44.473 ns] (CI 99.9%), Margin = 1.017 ns (2.34% of Mean)
Skewness = 0.29, Kurtosis = 3.27, MValue = 2.51
// ***** BenchmarkRunner: Finish *****
// * Export *
BenchmarkDotNet.Artifacts\results\PerformanceTests.CombinatorialNumberSystems.RankTests-report.csv
BenchmarkDotNet.Artifacts\results\PerformanceTests.CombinatorialNumberSystems.RankTests-report-github.md
BenchmarkDotNet.Artifacts\results\PerformanceTests.CombinatorialNumberSystems.RankTests-report.html
// * Detailed results *
RankTests.Rank: DefaultJob [n=5, k=3, kCombination=Int32[3]]
Runtime = .NET Core 3.1.13 (CoreCLR 4.700.21.11102, CoreFX 4.700.21.11602), X64 RyuJIT; GC = Concurrent Workstation
Mean = 48.608 ns, StdErr = 0.340 ns (0.70%), N = 100, StdDev = 3.399 ns
Min = 39.579 ns, Q1 = 46.258 ns, Median = 47.709 ns, Q3 = 51.825 ns, Max = 55.850 ns
IQR = 5.567 ns, LowerFence = 37.908 ns, UpperFence = 60.176 ns
ConfidenceInterval = [47.456 ns; 49.761 ns] (CI 99.9%), Margin = 1.153 ns (2.37% of Mean)
Skewness = 0.23, Kurtosis = 2.39, MValue = 2.76
-------------------- Histogram --------------------
[38.617 ns ; 40.540 ns) | @
[40.540 ns ; 41.833 ns) |
[41.833 ns ; 43.850 ns) | @@@
[43.850 ns ; 45.918 ns) | @@@@@@@@@@@@@@
[45.918 ns ; 47.841 ns) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[47.841 ns ; 49.690 ns) | @@@@@@@@@@@@@@@
[49.690 ns ; 51.937 ns) | @@@@@@@@
[51.937 ns ; 53.860 ns) | @@@@@@@@@@@@@@@@@@
[53.860 ns ; 55.882 ns) | @@@@@@@
---------------------------------------------------
RankTests.FastRank: DefaultJob [n=5, k=3, kCombination=Int32[3]]
Runtime = .NET Core 3.1.13 (CoreCLR 4.700.21.11102, CoreFX 4.700.21.11602), X64 RyuJIT; GC = Concurrent Workstation
Mean = 20.959 ns, StdErr = 0.190 ns (0.90%), N = 100, StdDev = 1.896 ns
Min = 16.757 ns, Q1 = 19.623 ns, Median = 20.772 ns, Q3 = 22.470 ns, Max = 24.550 ns
IQR = 2.846 ns, LowerFence = 15.354 ns, UpperFence = 26.739 ns
ConfidenceInterval = [20.316 ns; 21.602 ns] (CI 99.9%), Margin = 0.643 ns (3.07% of Mean)
Skewness = -0.06, Kurtosis = 2.44, MValue = 2.85
-------------------- Histogram --------------------
[16.531 ns ; 17.604 ns) | @@@@@@
[17.604 ns ; 18.297 ns) | @
[18.297 ns ; 19.349 ns) | @@@@@@@@
[19.349 ns ; 20.619 ns) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[20.619 ns ; 21.691 ns) | @@@@@@@@@@@@@@@@
[21.691 ns ; 22.445 ns) | @@@@@@@@@@
[22.445 ns ; 23.517 ns) | @@@@@@@@@@@@@@@@@@@
[23.517 ns ; 24.782 ns) | @@@@@@@
---------------------------------------------------
RankTests.Rank: DefaultJob [n=45, k=6, kCombination=Int32[6]]
Runtime = .NET Core 3.1.13 (CoreCLR 4.700.21.11102, CoreFX 4.700.21.11602), X64 RyuJIT; GC = Concurrent Workstation
Mean = 68.390 ns, StdErr = 0.356 ns (0.52%), N = 21, StdDev = 1.630 ns
Min = 63.800 ns, Q1 = 67.411 ns, Median = 68.603 ns, Q3 = 69.523 ns, Max = 70.817 ns
IQR = 2.112 ns, LowerFence = 64.243 ns, UpperFence = 72.691 ns
ConfidenceInterval = [67.021 ns; 69.759 ns] (CI 99.9%), Margin = 1.369 ns (2.00% of Mean)
Skewness = -0.88, Kurtosis = 3.77, MValue = 2
-------------------- Histogram --------------------
[63.025 ns ; 64.576 ns) | @
[64.576 ns ; 66.534 ns) | @
[66.534 ns ; 68.143 ns) | @@@@@@
[68.143 ns ; 69.694 ns) | @@@@@@@@@@
[69.694 ns ; 71.210 ns) | @@@
---------------------------------------------------
RankTests.FastRank: DefaultJob [n=45, k=6, kCombination=Int32[6]]
Runtime = .NET Core 3.1.13 (CoreCLR 4.700.21.11102, CoreFX 4.700.21.11602), X64 RyuJIT; GC = Concurrent Workstation
Mean = 43.165 ns, StdErr = 0.429 ns (0.99%), N = 100, StdDev = 4.287 ns
Min = 34.530 ns, Q1 = 41.126 ns, Median = 42.782 ns, Q3 = 47.191 ns, Max = 49.389 ns
IQR = 6.065 ns, LowerFence = 32.029 ns, UpperFence = 56.289 ns
ConfidenceInterval = [41.711 ns; 44.619 ns] (CI 99.9%), Margin = 1.454 ns (3.37% of Mean)
Skewness = -0.39, Kurtosis = 2.22, MValue = 3.76
-------------------- Histogram --------------------
[34.508 ns ; 36.933 ns) | @@@@@@@@@@@@@
[36.933 ns ; 38.976 ns) | @@@@
[38.976 ns ; 41.339 ns) | @@@@@@@@@@
[41.339 ns ; 43.764 ns) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[43.764 ns ; 46.724 ns) | @@@@@@@
[46.724 ns ; 49.148 ns) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@
[49.148 ns ; 50.601 ns) | @@@@
---------------------------------------------------
RankTests.Rank: DefaultJob [n=100, k=6, kCombination=Int32[6]]
Runtime = .NET Core 3.1.13 (CoreCLR 4.700.21.11102, CoreFX 4.700.21.11602), X64 RyuJIT; GC = Concurrent Workstation
Mean = 68.552 ns, StdErr = 0.383 ns (0.56%), N = 35, StdDev = 2.266 ns
Min = 61.024 ns, Q1 = 67.390 ns, Median = 68.790 ns, Q3 = 70.132 ns, Max = 72.016 ns
IQR = 2.742 ns, LowerFence = 63.276 ns, UpperFence = 74.245 ns
ConfidenceInterval = [67.173 ns; 69.931 ns] (CI 99.9%), Margin = 1.379 ns (2.01% of Mean)
Skewness = -1.06, Kurtosis = 4.56, MValue = 2
-------------------- Histogram --------------------
[60.115 ns ; 61.933 ns) | @
[61.933 ns ; 63.291 ns) |
[63.291 ns ; 64.983 ns) | @
[64.983 ns ; 66.783 ns) | @@@
[66.783 ns ; 68.601 ns) | @@@@@@@@@@@
[68.601 ns ; 70.896 ns) | @@@@@@@@@@@@@@@@
[70.896 ns ; 72.925 ns) | @@@
---------------------------------------------------
RankTests.FastRank: DefaultJob [n=100, k=6, kCombination=Int32[6]]
Runtime = .NET Core 3.1.13 (CoreCLR 4.700.21.11102, CoreFX 4.700.21.11602), X64 RyuJIT; GC = Concurrent Workstation
Mean = 43.456 ns, StdErr = 0.299 ns (0.69%), N = 95, StdDev = 2.918 ns
Min = 34.446 ns, Q1 = 41.749 ns, Median = 42.704 ns, Q3 = 45.003 ns, Max = 50.221 ns
IQR = 3.254 ns, LowerFence = 36.868 ns, UpperFence = 49.884 ns
ConfidenceInterval = [42.439 ns; 44.473 ns] (CI 99.9%), Margin = 1.017 ns (2.34% of Mean)
Skewness = 0.29, Kurtosis = 3.27, MValue = 2.51
-------------------- Histogram --------------------
[33.607 ns ; 35.286 ns) | @
[35.286 ns ; 36.964 ns) |
[36.964 ns ; 37.774 ns) |
[37.774 ns ; 39.485 ns) | @@@@
[39.485 ns ; 41.191 ns) | @@@@@@@@
[41.191 ns ; 42.870 ns) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[42.870 ns ; 44.552 ns) | @@@@@@@@@@@@@@@@@@@
[44.552 ns ; 46.495 ns) | @@@@@@@@@@@@
[46.495 ns ; 48.899 ns) | @@@@@@@@@@@@
[48.899 ns ; 51.061 ns) | @@@
---------------------------------------------------
// * Summary *
BenchmarkDotNet=v0.12.1, OS=Windows 10.0.19042
Intel Core i5-1035G4 CPU 1.10GHz, 1 CPU, 8 logical and 4 physical cores
.NET Core SDK=5.0.104
[Host] : .NET Core 3.1.13 (CoreCLR 4.700.21.11102, CoreFX 4.700.21.11602), X64 RyuJIT
DefaultJob : .NET Core 3.1.13 (CoreCLR 4.700.21.11102, CoreFX 4.700.21.11602), X64 RyuJIT
| Method | n | k | kCombination | Mean | Error | StdDev | Median | Ratio | RatioSD | Gen 0 | Gen 1 | Gen 2 | Allocated |
|--------- |---- |-- |------------- |---------:|---------:|---------:|---------:|------:|--------:|-------:|------:|------:|----------:|
| Rank | 5 | 3 | Int32[3] | 48.61 ns | 1.153 ns | 3.399 ns | 47.71 ns | 1.00 | 0.00 | 0.0229 | - | - | 72 B |
| FastRank | 5 | 3 | Int32[3] | 20.96 ns | 0.643 ns | 1.896 ns | 20.77 ns | 0.43 | 0.05 | 0.0102 | - | - | 32 B |
| | | | | | | | | | | | | | |
| Rank | 45 | 6 | Int32[6] | 68.39 ns | 1.369 ns | 1.630 ns | 68.60 ns | 1.00 | 0.00 | 0.0254 | - | - | 80 B |
| FastRank | 45 | 6 | Int32[6] | 43.17 ns | 1.454 ns | 4.287 ns | 42.78 ns | 0.66 | 0.05 | 0.0102 | - | - | 32 B |
| | | | | | | | | | | | | | |
| Rank | 100 | 6 | Int32[6] | 68.55 ns | 1.379 ns | 2.266 ns | 68.79 ns | 1.00 | 0.00 | 0.0254 | - | - | 80 B |
| FastRank | 100 | 6 | Int32[6] | 43.46 ns | 1.017 ns | 2.918 ns | 42.70 ns | 0.62 | 0.04 | 0.0102 | - | - | 32 B |
// * Warnings *
MultimodalDistribution
RankTests.FastRank: Default -> It seems that the distribution can have several modes (mValue = 2.85)
RankTests.FastRank: Default -> It seems that the distribution is bimodal (mValue = 3.76)
// * Hints *
Outliers
RankTests.Rank: Default -> 2 outliers were removed, 3 outliers were detected (65.40 ns, 76.84 ns, 77.54 ns)
RankTests.Rank: Default -> 4 outliers were removed, 5 outliers were detected (62.60 ns, 77.65 ns..82.33 ns)
RankTests.FastRank: Default -> 5 outliers were removed, 6 outliers were detected (35.94 ns, 52.98 ns..53.27 ns)
// * Legends *
n : Value of the 'n' parameter
k : Value of the 'k' parameter
kCombination : Value of the 'kCombination' parameter
Mean : Arithmetic mean of all measurements
Error : Half of 99.9% confidence interval
StdDev : Standard deviation of all measurements
Median : Value separating the higher half of all measurements (50th percentile)
Ratio : Mean of the ratio distribution ([Current]/[Baseline])
RatioSD : Standard deviation of the ratio distribution ([Current]/[Baseline])
Gen 0 : GC Generation 0 collects per 1000 operations
Gen 1 : GC Generation 1 collects per 1000 operations
Gen 2 : GC Generation 2 collects per 1000 operations
Allocated : Allocated memory per single operation (managed only, inclusive, 1KB = 1024B)
1 ns : 1 Nanosecond (0.000000001 sec)
// * Diagnostic Output - MemoryDiagnoser *
// ***** BenchmarkRunner: End *****
// ** Remained 0 benchmark(s) to run **
Run time: 00:06:39 (399.74 sec), executed benchmarks: 6
Global total time: 00:06:44 (404.18 sec), executed benchmarks: 6
// * Artifacts cleanup *
// Validating benchmarks:
// ***** BenchmarkRunner: Start *****
// ***** Found 6 benchmark(s) in total *****
// ***** Building 1 exe(s) in Parallel: Start *****
// start dotnet restore /p:UseSharedCompilation=false /p:BuildInParallel=false /m:1 in C:\dev\LottoGenerator\LG.Tests.BenchmarkDotNet\bin\Release\netcoreapp3.1\484488c8-1872-4c08-bc42-d7aff7418c0a
// command took 1.53s and exited with 0
// start dotnet build -c Release --no-restore /p:UseSharedCompilation=false /p:BuildInParallel=false /m:1 in C:\dev\LottoGenerator\LG.Tests.BenchmarkDotNet\bin\Release\netcoreapp3.1\484488c8-1872-4c08-bc42-d7aff7418c0a
// command took 3.6s and exited with 0
// ***** Done, took 00:00:05 (5.27 sec) *****
// Found 6 benchmarks:
// UnRankTests.Unrank: DefaultJob [n=5, k=3]
// UnRankTests.FastUnrank: DefaultJob [n=5, k=3]
// UnRankTests.Unrank: DefaultJob [n=45, k=6]
// UnRankTests.FastUnrank: DefaultJob [n=45, k=6]
// UnRankTests.Unrank: DefaultJob [n=100, k=6]
// UnRankTests.FastUnrank: DefaultJob [n=100, k=6]
// **************************
// Benchmark: UnRankTests.Unrank: DefaultJob [n=5, k=3]
// *** Execute ***
// Launch: 1 / 1
// Execute: dotnet "484488c8-1872-4c08-bc42-d7aff7418c0a.dll" --benchmarkName "PerformanceTests.CombinatorialNumberSystems.UnRankTests.Unrank(n: 5, k: 3)" --job "Default" --benchmarkId 0 in C:\dev\LottoGenerator\LG.Tests.BenchmarkDotNet\bin\Release\netcoreapp3.1\484488c8-1872-4c08-bc42-d7aff7418c0a\bin\Release\netcoreapp3.1
// BeforeAnythingElse
// Benchmark Process Environment Information:
// Runtime=.NET Core 3.1.13 (CoreCLR 4.700.21.11102, CoreFX 4.700.21.11602), X64 RyuJIT
// GC=Concurrent Workstation
// Job: DefaultJob
OverheadJitting 1: 1 op, 406900.00 ns, 406.9000 us/op
WorkloadJitting 1: 1 op, 33123200.00 ns, 33.1232 ms/op
OverheadJitting 2: 16 op, 733700.00 ns, 45.8563 us/op
WorkloadJitting 2: 16 op, 742100.00 ns, 46.3813 us/op
WorkloadPilot 1: 16 op, 3600.00 ns, 225.0000 ns/op
WorkloadPilot 2: 32 op, 3000.00 ns, 93.7500 ns/op
WorkloadPilot 3: 64 op, 5100.00 ns, 79.6875 ns/op
WorkloadPilot 4: 128 op, 8100.00 ns, 63.2812 ns/op
WorkloadPilot 5: 256 op, 17100.00 ns, 66.7969 ns/op
WorkloadPilot 6: 512 op, 27300.00 ns, 53.3203 ns/op
WorkloadPilot 7: 1024 op, 55500.00 ns, 54.1992 ns/op
WorkloadPilot 8: 2048 op, 135000.00 ns, 65.9180 ns/op
WorkloadPilot 9: 4096 op, 247600.00 ns, 60.4492 ns/op
WorkloadPilot 10: 8192 op, 546400.00 ns, 66.6992 ns/op
WorkloadPilot 11: 16384 op, 1141200.00 ns, 69.6533 ns/op
WorkloadPilot 12: 32768 op, 2123200.00 ns, 64.7949 ns/op
WorkloadPilot 13: 65536 op, 3836800.00 ns, 58.5449 ns/op
WorkloadPilot 14: 131072 op, 7413700.00 ns, 56.5620 ns/op
WorkloadPilot 15: 262144 op, 14955800.00 ns, 57.0518 ns/op
WorkloadPilot 16: 524288 op, 31241200.00 ns, 59.5879 ns/op
WorkloadPilot 17: 1048576 op, 58091900.00 ns, 55.4008 ns/op
WorkloadPilot 18: 2097152 op, 110337700.00 ns, 52.6131 ns/op
WorkloadPilot 19: 4194304 op, 210666600.00 ns, 50.2268 ns/op
WorkloadPilot 20: 8388608 op, 420357200.00 ns, 50.1105 ns/op
WorkloadPilot 21: 16777216 op, 835890900.00 ns, 49.8230 ns/op
OverheadWarmup 1: 16777216 op, 53022100.00 ns, 3.1604 ns/op
OverheadWarmup 2: 16777216 op, 52957000.00 ns, 3.1565 ns/op
OverheadWarmup 3: 16777216 op, 53129300.00 ns, 3.1668 ns/op
OverheadWarmup 4: 16777216 op, 52856300.00 ns, 3.1505 ns/op
OverheadWarmup 5: 16777216 op, 52832400.00 ns, 3.1491 ns/op
OverheadWarmup 6: 16777216 op, 53838300.00 ns, 3.2090 ns/op
OverheadWarmup 7: 16777216 op, 53852500.00 ns, 3.2099 ns/op
OverheadWarmup 8: 16777216 op, 52578200.00 ns, 3.1339 ns/op
OverheadActual 1: 16777216 op, 52997600.00 ns, 3.1589 ns/op
OverheadActual 2: 16777216 op, 52915200.00 ns, 3.1540 ns/op
OverheadActual 3: 16777216 op, 52701400.00 ns, 3.1412 ns/op
OverheadActual 4: 16777216 op, 52764500.00 ns, 3.1450 ns/op
OverheadActual 5: 16777216 op, 52831000.00 ns, 3.1490 ns/op
OverheadActual 6: 16777216 op, 52942200.00 ns, 3.1556 ns/op
OverheadActual 7: 16777216 op, 52641600.00 ns, 3.1377 ns/op
OverheadActual 8: 16777216 op, 52762200.00 ns, 3.1449 ns/op
OverheadActual 9: 16777216 op, 52922900.00 ns, 3.1545 ns/op
OverheadActual 10: 16777216 op, 52700100.00 ns, 3.1412 ns/op
OverheadActual 11: 16777216 op, 52895100.00 ns, 3.1528 ns/op
OverheadActual 12: 16777216 op, 52806200.00 ns, 3.1475 ns/op
OverheadActual 13: 16777216 op, 53302200.00 ns, 3.1771 ns/op
OverheadActual 14: 16777216 op, 52801700.00 ns, 3.1472 ns/op
OverheadActual 15: 16777216 op, 53227700.00 ns, 3.1726 ns/op
WorkloadWarmup 1: 16777216 op, 836368900.00 ns, 49.8515 ns/op
WorkloadWarmup 2: 16777216 op, 840452900.00 ns, 50.0949 ns/op
WorkloadWarmup 3: 16777216 op, 838275900.00 ns, 49.9651 ns/op
WorkloadWarmup 4: 16777216 op, 839305700.00 ns, 50.0265 ns/op
WorkloadWarmup 5: 16777216 op, 832781600.00 ns, 49.6377 ns/op
WorkloadWarmup 6: 16777216 op, 850897800.00 ns, 50.7175 ns/op
// BeforeActualRun
WorkloadActual 1: 16777216 op, 835505100.00 ns, 49.8000 ns/op
WorkloadActual 2: 16777216 op, 836634500.00 ns, 49.8673 ns/op
WorkloadActual 3: 16777216 op, 832088100.00 ns, 49.5963 ns/op
WorkloadActual 4: 16777216 op, 832708000.00 ns, 49.6333 ns/op
WorkloadActual 5: 16777216 op, 838468800.00 ns, 49.9766 ns/op
WorkloadActual 6: 16777216 op, 842360900.00 ns, 50.2086 ns/op
WorkloadActual 7: 16777216 op, 842152100.00 ns, 50.1962 ns/op
WorkloadActual 8: 16777216 op, 838515100.00 ns, 49.9794 ns/op
WorkloadActual 9: 16777216 op, 844807700.00 ns, 50.3545 ns/op
WorkloadActual 10: 16777216 op, 837197300.00 ns, 49.9008 ns/op
WorkloadActual 11: 16777216 op, 835849700.00 ns, 49.8205 ns/op
WorkloadActual 12: 16777216 op, 835503700.00 ns, 49.7999 ns/op
WorkloadActual 13: 16777216 op, 836267200.00 ns, 49.8454 ns/op
WorkloadActual 14: 16777216 op, 836797400.00 ns, 49.8770 ns/op
WorkloadActual 15: 16777216 op, 837233900.00 ns, 49.9030 ns/op
// AfterActualRun
WorkloadResult 1: 16777216 op, 782674100.00 ns, 46.6510 ns/op
WorkloadResult 2: 16777216 op, 783803500.00 ns, 46.7183 ns/op
WorkloadResult 3: 16777216 op, 779257100.00 ns, 46.4473 ns/op
WorkloadResult 4: 16777216 op, 779877000.00 ns, 46.4843 ns/op
WorkloadResult 5: 16777216 op, 785637800.00 ns, 46.8277 ns/op
WorkloadResult 6: 16777216 op, 789529900.00 ns, 47.0596 ns/op
WorkloadResult 7: 16777216 op, 789321100.00 ns, 47.0472 ns/op
WorkloadResult 8: 16777216 op, 785684100.00 ns, 46.8304 ns/op
WorkloadResult 9: 16777216 op, 784366300.00 ns, 46.7519 ns/op
WorkloadResult 10: 16777216 op, 783018700.00 ns, 46.6716 ns/op
WorkloadResult 11: 16777216 op, 782672700.00 ns, 46.6509 ns/op
WorkloadResult 12: 16777216 op, 783436200.00 ns, 46.6964 ns/op
WorkloadResult 13: 16777216 op, 783966400.00 ns, 46.7280 ns/op
WorkloadResult 14: 16777216 op, 784402900.00 ns, 46.7541 ns/op
GC: 385 0 0 1207959552 16777216
Threading: 2 0 16777216
// AfterAll
// Benchmark Process 18580 has exited with code 0
Mean = 46.737 ns, StdErr = 0.046 ns (0.10%), N = 14, StdDev = 0.172 ns
Min = 46.447 ns, Q1 = 46.656 ns, Median = 46.723 ns, Q3 = 46.809 ns, Max = 47.060 ns
IQR = 0.153 ns, LowerFence = 46.426 ns, UpperFence = 47.039 ns
ConfidenceInterval = [46.542 ns; 46.932 ns] (CI 99.9%), Margin = 0.195 ns (0.42% of Mean)
Skewness = 0.32, Kurtosis = 2.54, MValue = 2
// **************************
// Benchmark: UnRankTests.FastUnrank: DefaultJob [n=5, k=3]
// *** Execute ***
// Launch: 1 / 1
// Execute: dotnet "484488c8-1872-4c08-bc42-d7aff7418c0a.dll" --benchmarkName "PerformanceTests.CombinatorialNumberSystems.UnRankTests.FastUnrank(n: 5, k: 3)" --job "Default" --benchmarkId 1 in C:\dev\LottoGenerator\LG.Tests.BenchmarkDotNet\bin\Release\netcoreapp3.1\484488c8-1872-4c08-bc42-d7aff7418c0a\bin\Release\netcoreapp3.1
// BeforeAnythingElse
// Benchmark Process Environment Information:
// Runtime=.NET Core 3.1.13 (CoreCLR 4.700.21.11102, CoreFX 4.700.21.11602), X64 RyuJIT
// GC=Concurrent Workstation
// Job: DefaultJob
OverheadJitting 1: 1 op, 592900.00 ns, 592.9000 us/op
WorkloadJitting 1: 1 op, 1831400.00 ns, 1.8314 ms/op
OverheadJitting 2: 16 op, 725500.00 ns, 45.3438 us/op
WorkloadJitting 2: 16 op, 732900.00 ns, 45.8062 us/op
WorkloadPilot 1: 16 op, 2900.00 ns, 181.2500 ns/op
WorkloadPilot 2: 32 op, 2500.00 ns, 78.1250 ns/op
WorkloadPilot 3: 64 op, 4600.00 ns, 71.8750 ns/op
WorkloadPilot 4: 128 op, 7400.00 ns, 57.8125 ns/op
WorkloadPilot 5: 256 op, 15200.00 ns, 59.3750 ns/op
WorkloadPilot 6: 512 op, 44700.00 ns, 87.3047 ns/op
WorkloadPilot 7: 1024 op, 53200.00 ns, 51.9531 ns/op
WorkloadPilot 8: 2048 op, 132400.00 ns, 64.6484 ns/op
WorkloadPilot 9: 4096 op, 223700.00 ns, 54.6143 ns/op
WorkloadPilot 10: 8192 op, 551600.00 ns, 67.3340 ns/op
WorkloadPilot 11: 16384 op, 1012500.00 ns, 61.7981 ns/op
WorkloadPilot 12: 32768 op, 1952300.00 ns, 59.5795 ns/op
WorkloadPilot 13: 65536 op, 3528600.00 ns, 53.8422 ns/op
WorkloadPilot 14: 131072 op, 6579700.00 ns, 50.1991 ns/op
WorkloadPilot 15: 262144 op, 13595200.00 ns, 51.8616 ns/op
WorkloadPilot 16: 524288 op, 27410500.00 ns, 52.2814 ns/op
WorkloadPilot 17: 1048576 op, 53078600.00 ns, 50.6197 ns/op
WorkloadPilot 18: 2097152 op, 103635800.00 ns, 49.4174 ns/op
WorkloadPilot 19: 4194304 op, 196977100.00 ns, 46.9630 ns/op
WorkloadPilot 20: 8388608 op, 386764800.00 ns, 46.1060 ns/op
WorkloadPilot 21: 16777216 op, 785250600.00 ns, 46.8046 ns/op
OverheadWarmup 1: 16777216 op, 57188500.00 ns, 3.4087 ns/op
OverheadWarmup 2: 16777216 op, 57306200.00 ns, 3.4157 ns/op
OverheadWarmup 3: 16777216 op, 61969500.00 ns, 3.6937 ns/op
OverheadWarmup 4: 16777216 op, 57617100.00 ns, 3.4342 ns/op
OverheadWarmup 5: 16777216 op, 57761100.00 ns, 3.4428 ns/op
OverheadWarmup 6: 16777216 op, 57996500.00 ns, 3.4569 ns/op
OverheadWarmup 7: 16777216 op, 57885000.00 ns, 3.4502 ns/op
OverheadActual 1: 16777216 op, 59806500.00 ns, 3.5647 ns/op
OverheadActual 2: 16777216 op, 58147600.00 ns, 3.4659 ns/op
OverheadActual 3: 16777216 op, 58141300.00 ns, 3.4655 ns/op
OverheadActual 4: 16777216 op, 57949200.00 ns, 3.4540 ns/op
OverheadActual 5: 16777216 op, 58100600.00 ns, 3.4631 ns/op
OverheadActual 6: 16777216 op, 58384200.00 ns, 3.4800 ns/op
OverheadActual 7: 16777216 op, 62879400.00 ns, 3.7479 ns/op
OverheadActual 8: 16777216 op, 58276200.00 ns, 3.4735 ns/op
OverheadActual 9: 16777216 op, 58633800.00 ns, 3.4948 ns/op
OverheadActual 10: 16777216 op, 57853400.00 ns, 3.4483 ns/op
OverheadActual 11: 16777216 op, 58109100.00 ns, 3.4636 ns/op
OverheadActual 12: 16777216 op, 58200000.00 ns, 3.4690 ns/op
OverheadActual 13: 16777216 op, 58260300.00 ns, 3.4726 ns/op
OverheadActual 14: 16777216 op, 57620900.00 ns, 3.4345 ns/op
OverheadActual 15: 16777216 op, 58254100.00 ns, 3.4722 ns/op
WorkloadWarmup 1: 16777216 op, 776382200.00 ns, 46.2760 ns/op
WorkloadWarmup 2: 16777216 op, 780888000.00 ns, 46.5446 ns/op
WorkloadWarmup 3: 16777216 op, 776304600.00 ns, 46.2714 ns/op
WorkloadWarmup 4: 16777216 op, 774777900.00 ns, 46.1804 ns/op
WorkloadWarmup 5: 16777216 op, 794677700.00 ns, 47.3665 ns/op
WorkloadWarmup 6: 16777216 op, 780957000.00 ns, 46.5487 ns/op
// BeforeActualRun
WorkloadActual 1: 16777216 op, 792368800.00 ns, 47.2289 ns/op
WorkloadActual 2: 16777216 op, 781051700.00 ns, 46.5543 ns/op
WorkloadActual 3: 16777216 op, 782846800.00 ns, 46.6613 ns/op
WorkloadActual 4: 16777216 op, 777867100.00 ns, 46.3645 ns/op
WorkloadActual 5: 16777216 op, 777397600.00 ns, 46.3365 ns/op
WorkloadActual 6: 16777216 op, 777128500.00 ns, 46.3205 ns/op
WorkloadActual 7: 16777216 op, 780250900.00 ns, 46.5066 ns/op
WorkloadActual 8: 16777216 op, 792696000.00 ns, 47.2484 ns/op
WorkloadActual 9: 16777216 op, 776349900.00 ns, 46.2741 ns/op
WorkloadActual 10: 16777216 op, 782940700.00 ns, 46.6669 ns/op
WorkloadActual 11: 16777216 op, 778998400.00 ns, 46.4319 ns/op
WorkloadActual 12: 16777216 op, 778737200.00 ns, 46.4164 ns/op
WorkloadActual 13: 16777216 op, 772065300.00 ns, 46.0187 ns/op
WorkloadActual 14: 16777216 op, 794451600.00 ns, 47.3530 ns/op
WorkloadActual 15: 16777216 op, 781485100.00 ns, 46.5801 ns/op
// AfterActualRun
WorkloadResult 1: 16777216 op, 722851700.00 ns, 43.0853 ns/op
WorkloadResult 2: 16777216 op, 724646800.00 ns, 43.1923 ns/op
WorkloadResult 3: 16777216 op, 719667100.00 ns, 42.8955 ns/op
WorkloadResult 4: 16777216 op, 719197600.00 ns, 42.8675 ns/op
WorkloadResult 5: 16777216 op, 718928500.00 ns, 42.8515 ns/op
WorkloadResult 6: 16777216 op, 722050900.00 ns, 43.0376 ns/op
WorkloadResult 7: 16777216 op, 718149900.00 ns, 42.8051 ns/op
WorkloadResult 8: 16777216 op, 724740700.00 ns, 43.1979 ns/op
WorkloadResult 9: 16777216 op, 720798400.00 ns, 42.9629 ns/op
WorkloadResult 10: 16777216 op, 720537200.00 ns, 42.9474 ns/op
WorkloadResult 11: 16777216 op, 713865300.00 ns, 42.5497 ns/op
WorkloadResult 12: 16777216 op, 723285100.00 ns, 43.1112 ns/op
GC: 384 0 0 1207959552 16777216
Threading: 2 0 16777216
// AfterAll
// Benchmark Process 16444 has exited with code 0
Mean = 42.959 ns, StdErr = 0.053 ns (0.12%), N = 12, StdDev = 0.184 ns
Min = 42.550 ns, Q1 = 42.864 ns, Median = 42.955 ns, Q3 = 43.092 ns, Max = 43.198 ns
IQR = 0.228 ns, LowerFence = 42.521 ns, UpperFence = 43.434 ns
ConfidenceInterval = [42.723 ns; 43.194 ns] (CI 99.9%), Margin = 0.236 ns (0.55% of Mean)
Skewness = -0.56, Kurtosis = 2.61, MValue = 2
// **************************
// Benchmark: UnRankTests.Unrank: DefaultJob [n=45, k=6]
// *** Execute ***
// Launch: 1 / 1
// Execute: dotnet "484488c8-1872-4c08-bc42-d7aff7418c0a.dll" --benchmarkName "PerformanceTests.CombinatorialNumberSystems.UnRankTests.Unrank(n: 45, k: 6)" --job "Default" --benchmarkId 2 in C:\dev\LottoGenerator\LG.Tests.BenchmarkDotNet\bin\Release\netcoreapp3.1\484488c8-1872-4c08-bc42-d7aff7418c0a\bin\Release\netcoreapp3.1
// BeforeAnythingElse
// Benchmark Process Environment Information:
// Runtime=.NET Core 3.1.13 (CoreCLR 4.700.21.11102, CoreFX 4.700.21.11602), X64 RyuJIT
// GC=Concurrent Workstation
// Job: DefaultJob
OverheadJitting 1: 1 op, 398100.00 ns, 398.1000 us/op
WorkloadJitting 1: 1 op, 2278500.00 ns, 2.2785 ms/op
OverheadJitting 2: 16 op, 983500.00 ns, 61.4688 us/op
WorkloadJitting 2: 16 op, 868500.00 ns, 54.2812 us/op
WorkloadPilot 1: 16 op, 4100.00 ns, 256.2500 ns/op
WorkloadPilot 2: 32 op, 5100.00 ns, 159.3750 ns/op
WorkloadPilot 3: 64 op, 8700.00 ns, 135.9375 ns/op
WorkloadPilot 4: 128 op, 18600.00 ns, 145.3125 ns/op
WorkloadPilot 5: 256 op, 35800.00 ns, 139.8438 ns/op
WorkloadPilot 6: 512 op, 65300.00 ns, 127.5391 ns/op
WorkloadPilot 7: 1024 op, 130600.00 ns, 127.5391 ns/op
WorkloadPilot 8: 2048 op, 326900.00 ns, 159.6191 ns/op
WorkloadPilot 9: 4096 op, 564300.00 ns, 137.7686 ns/op
WorkloadPilot 10: 8192 op, 1189100.00 ns, 145.1538 ns/op
WorkloadPilot 11: 16384 op, 2345000.00 ns, 143.1274 ns/op
WorkloadPilot 12: 32768 op, 5043500.00 ns, 153.9154 ns/op
WorkloadPilot 13: 65536 op, 8593500.00 ns, 131.1264 ns/op
WorkloadPilot 14: 131072 op, 17967000.00 ns, 137.0773 ns/op
WorkloadPilot 15: 262144 op, 35545100.00 ns, 135.5938 ns/op
WorkloadPilot 16: 524288 op, 68866300.00 ns, 131.3520 ns/op
WorkloadPilot 17: 1048576 op, 131996000.00 ns, 125.8812 ns/op
WorkloadPilot 18: 2097152 op, 264283700.00 ns, 126.0203 ns/op
WorkloadPilot 19: 4194304 op, 522109900.00 ns, 124.4807 ns/op
OverheadWarmup 1: 4194304 op, 14446800.00 ns, 3.4444 ns/op
OverheadWarmup 2: 4194304 op, 14674000.00 ns, 3.4986 ns/op
OverheadWarmup 3: 4194304 op, 14657700.00 ns, 3.4947 ns/op
OverheadWarmup 4: 4194304 op, 14513000.00 ns, 3.4602 ns/op
OverheadWarmup 5: 4194304 op, 14842400.00 ns, 3.5387 ns/op
OverheadWarmup 6: 4194304 op, 14619700.00 ns, 3.4856 ns/op
OverheadActual 1: 4194304 op, 14657000.00 ns, 3.4945 ns/op
OverheadActual 2: 4194304 op, 14435800.00 ns, 3.4418 ns/op
OverheadActual 3: 4194304 op, 15630800.00 ns, 3.7267 ns/op
OverheadActual 4: 4194304 op, 14502000.00 ns, 3.4575 ns/op
OverheadActual 5: 4194304 op, 14475800.00 ns, 3.4513 ns/op
OverheadActual 6: 4194304 op, 14567800.00 ns, 3.4732 ns/op
OverheadActual 7: 4194304 op, 14487900.00 ns, 3.4542 ns/op
OverheadActual 8: 4194304 op, 14422200.00 ns, 3.4385 ns/op
OverheadActual 9: 4194304 op, 14491400.00 ns, 3.4550 ns/op
OverheadActual 10: 4194304 op, 14662800.00 ns, 3.4959 ns/op
OverheadActual 11: 4194304 op, 14459300.00 ns, 3.4474 ns/op
OverheadActual 12: 4194304 op, 14726800.00 ns, 3.5111 ns/op
OverheadActual 13: 4194304 op, 14540500.00 ns, 3.4667 ns/op
OverheadActual 14: 4194304 op, 14458800.00 ns, 3.4472 ns/op
OverheadActual 15: 4194304 op, 14657700.00 ns, 3.4947 ns/op
WorkloadWarmup 1: 4194304 op, 522098400.00 ns, 124.4780 ns/op
WorkloadWarmup 2: 4194304 op, 525287300.00 ns, 125.2383 ns/op
WorkloadWarmup 3: 4194304 op, 528178800.00 ns, 125.9276 ns/op
WorkloadWarmup 4: 4194304 op, 523869200.00 ns, 124.9002 ns/op
WorkloadWarmup 5: 4194304 op, 531855100.00 ns, 126.8041 ns/op
WorkloadWarmup 6: 4194304 op, 523969500.00 ns, 124.9241 ns/op
// BeforeActualRun
WorkloadActual 1: 4194304 op, 526363500.00 ns, 125.4948 ns/op
WorkloadActual 2: 4194304 op, 524312700.00 ns, 125.0059 ns/op
WorkloadActual 3: 4194304 op, 527181200.00 ns, 125.6898 ns/op
WorkloadActual 4: 4194304 op, 523785900.00 ns, 124.8803 ns/op
WorkloadActual 5: 4194304 op, 532056000.00 ns, 126.8520 ns/op
WorkloadActual 6: 4194304 op, 530198300.00 ns, 126.4091 ns/op
WorkloadActual 7: 4194304 op, 527533100.00 ns, 125.7737 ns/op
WorkloadActual 8: 4194304 op, 535034000.00 ns, 127.5620 ns/op
WorkloadActual 9: 4194304 op, 518868800.00 ns, 123.7080 ns/op
WorkloadActual 10: 4194304 op, 534511600.00 ns, 127.4375 ns/op
WorkloadActual 11: 4194304 op, 525893700.00 ns, 125.3828 ns/op
WorkloadActual 12: 4194304 op, 522128100.00 ns, 124.4850 ns/op
WorkloadActual 13: 4194304 op, 523910800.00 ns, 124.9101 ns/op
WorkloadActual 14: 4194304 op, 524653900.00 ns, 125.0872 ns/op
WorkloadActual 15: 4194304 op, 520550600.00 ns, 124.1089 ns/op
// AfterActualRun
WorkloadResult 1: 4194304 op, 511861500.00 ns, 122.0373 ns/op
WorkloadResult 2: 4194304 op, 509810700.00 ns, 121.5483 ns/op
WorkloadResult 3: 4194304 op, 512679200.00 ns, 122.2322 ns/op
WorkloadResult 4: 4194304 op, 509283900.00 ns, 121.4227 ns/op
WorkloadResult 5: 4194304 op, 517554000.00 ns, 123.3945 ns/op
WorkloadResult 6: 4194304 op, 515696300.00 ns, 122.9516 ns/op
WorkloadResult 7: 4194304 op, 513031100.00 ns, 122.3161 ns/op
WorkloadResult 8: 4194304 op, 520532000.00 ns, 124.1045 ns/op
WorkloadResult 9: 4194304 op, 504366800.00 ns, 120.2504 ns/op
WorkloadResult 10: 4194304 op, 520009600.00 ns, 123.9799 ns/op
WorkloadResult 11: 4194304 op, 511391700.00 ns, 121.9253 ns/op
WorkloadResult 12: 4194304 op, 507626100.00 ns, 121.0275 ns/op
WorkloadResult 13: 4194304 op, 509408800.00 ns, 121.4525 ns/op
WorkloadResult 14: 4194304 op, 510151900.00 ns, 121.6297 ns/op
WorkloadResult 15: 4194304 op, 506048600.00 ns, 120.6514 ns/op
GC: 106 0 0 335545696 4194304
Threading: 2 0 4194304
// AfterAll
// Benchmark Process 13596 has exited with code 0
Mean = 122.062 ns, StdErr = 0.294 ns (0.24%), N = 15, StdDev = 1.137 ns
Min = 120.250 ns, Q1 = 121.438 ns, Median = 121.925 ns, Q3 = 122.634 ns, Max = 124.104 ns
IQR = 1.196 ns, LowerFence = 119.643 ns, UpperFence = 124.428 ns
ConfidenceInterval = [120.846 ns; 123.277 ns] (CI 99.9%), Margin = 1.216 ns (1.00% of Mean)
Skewness = 0.37, Kurtosis = 2.03, MValue = 2
// **************************
// Benchmark: UnRankTests.FastUnrank: DefaultJob [n=45, k=6]
// *** Execute ***
// Launch: 1 / 1
// Execute: dotnet "484488c8-1872-4c08-bc42-d7aff7418c0a.dll" --benchmarkName "PerformanceTests.CombinatorialNumberSystems.UnRankTests.FastUnrank(n: 45, k: 6)" --job "Default" --benchmarkId 3 in C:\dev\LottoGenerator\LG.Tests.BenchmarkDotNet\bin\Release\netcoreapp3.1\484488c8-1872-4c08-bc42-d7aff7418c0a\bin\Release\netcoreapp3.1
// BeforeAnythingElse
// Benchmark Process Environment Information:
// Runtime=.NET Core 3.1.13 (CoreCLR 4.700.21.11102, CoreFX 4.700.21.11602), X64 RyuJIT
// GC=Concurrent Workstation
// Job: DefaultJob
OverheadJitting 1: 1 op, 427600.00 ns, 427.6000 us/op
WorkloadJitting 1: 1 op, 1937300.00 ns, 1.9373 ms/op
OverheadJitting 2: 16 op, 718600.00 ns, 44.9125 us/op
WorkloadJitting 2: 16 op, 1090500.00 ns, 68.1562 us/op
WorkloadPilot 1: 16 op, 5200.00 ns, 325.0000 ns/op
WorkloadPilot 2: 32 op, 6000.00 ns, 187.5000 ns/op
WorkloadPilot 3: 64 op, 9400.00 ns, 146.8750 ns/op
WorkloadPilot 4: 128 op, 16300.00 ns, 127.3438 ns/op
WorkloadPilot 5: 256 op, 49600.00 ns, 193.7500 ns/op
WorkloadPilot 6: 512 op, 65600.00 ns, 128.1250 ns/op
WorkloadPilot 7: 1024 op, 129200.00 ns, 126.1719 ns/op
WorkloadPilot 8: 2048 op, 298800.00 ns, 145.8984 ns/op
WorkloadPilot 9: 4096 op, 553500.00 ns, 135.1318 ns/op
WorkloadPilot 10: 8192 op, 1104700.00 ns, 134.8511 ns/op
WorkloadPilot 11: 16384 op, 2285800.00 ns, 139.5142 ns/op
WorkloadPilot 12: 32768 op, 5122900.00 ns, 156.3385 ns/op
WorkloadPilot 13: 65536 op, 8660400.00 ns, 132.1472 ns/op
WorkloadPilot 14: 131072 op, 16646400.00 ns, 127.0020 ns/op
WorkloadPilot 15: 262144 op, 34634500.00 ns, 132.1201 ns/op
WorkloadPilot 16: 524288 op, 67323200.00 ns, 128.4088 ns/op
WorkloadPilot 17: 1048576 op, 127940200.00 ns, 122.0133 ns/op
WorkloadPilot 18: 2097152 op, 258411100.00 ns, 123.2200 ns/op
WorkloadPilot 19: 4194304 op, 513568800.00 ns, 122.4443 ns/op
OverheadWarmup 1: 4194304 op, 14626200.00 ns, 3.4872 ns/op
OverheadWarmup 2: 4194304 op, 14337000.00 ns, 3.4182 ns/op
OverheadWarmup 3: 4194304 op, 14379300.00 ns, 3.4283 ns/op
OverheadWarmup 4: 4194304 op, 14794400.00 ns, 3.5273 ns/op
OverheadWarmup 5: 4194304 op, 14860200.00 ns, 3.5429 ns/op
OverheadWarmup 6: 4194304 op, 14458300.00 ns, 3.4471 ns/op
OverheadWarmup 7: 4194304 op, 14495800.00 ns, 3.4561 ns/op
OverheadWarmup 8: 4194304 op, 15043200.00 ns, 3.5866 ns/op
OverheadWarmup 9: 4194304 op, 14453700.00 ns, 3.4460 ns/op
OverheadActual 1: 4194304 op, 14566800.00 ns, 3.4730 ns/op
OverheadActual 2: 4194304 op, 14356900.00 ns, 3.4230 ns/op
OverheadActual 3: 4194304 op, 14375200.00 ns, 3.4273 ns/op
OverheadActual 4: 4194304 op, 15029400.00 ns, 3.5833 ns/op
OverheadActual 5: 4194304 op, 15008500.00 ns, 3.5783 ns/op
OverheadActual 6: 4194304 op, 14903300.00 ns, 3.5532 ns/op
OverheadActual 7: 4194304 op, 14461800.00 ns, 3.4480 ns/op
OverheadActual 8: 4194304 op, 14409700.00 ns, 3.4355 ns/op
OverheadActual 9: 4194304 op, 14812900.00 ns, 3.5317 ns/op
OverheadActual 10: 4194304 op, 15090700.00 ns, 3.5979 ns/op
OverheadActual 11: 4194304 op, 14491900.00 ns, 3.4551 ns/op
OverheadActual 12: 4194304 op, 15393300.00 ns, 3.6700 ns/op
OverheadActual 13: 4194304 op, 15274200.00 ns, 3.6417 ns/op
OverheadActual 14: 4194304 op, 14839500.00 ns, 3.5380 ns/op
OverheadActual 15: 4194304 op, 14457700.00 ns, 3.4470 ns/op
WorkloadWarmup 1: 4194304 op, 512989000.00 ns, 122.3061 ns/op
WorkloadWarmup 2: 4194304 op, 516676700.00 ns, 123.1853 ns/op
WorkloadWarmup 3: 4194304 op, 523863000.00 ns, 124.8987 ns/op
WorkloadWarmup 4: 4194304 op, 531441900.00 ns, 126.7056 ns/op
WorkloadWarmup 5: 4194304 op, 520865100.00 ns, 124.1839 ns/op
WorkloadWarmup 6: 4194304 op, 511145300.00 ns, 121.8665 ns/op
WorkloadWarmup 7: 4194304 op, 519881300.00 ns, 123.9494 ns/op
WorkloadWarmup 8: 4194304 op, 511100300.00 ns, 121.8558 ns/op
// BeforeActualRun
WorkloadActual 1: 4194304 op, 519961400.00 ns, 123.9685 ns/op
WorkloadActual 2: 4194304 op, 522258600.00 ns, 124.5162 ns/op
WorkloadActual 3: 4194304 op, 522649400.00 ns, 124.6093 ns/op
WorkloadActual 4: 4194304 op, 515337000.00 ns, 122.8659 ns/op
WorkloadActual 5: 4194304 op, 524536300.00 ns, 125.0592 ns/op
WorkloadActual 6: 4194304 op, 512430000.00 ns, 122.1728 ns/op
WorkloadActual 7: 4194304 op, 525451200.00 ns, 125.2773 ns/op
WorkloadActual 8: 4194304 op, 521660800.00 ns, 124.3736 ns/op
WorkloadActual 9: 4194304 op, 511889900.00 ns, 122.0441 ns/op
WorkloadActual 10: 4194304 op, 520170900.00 ns, 124.0184 ns/op
WorkloadActual 11: 4194304 op, 511042400.00 ns, 121.8420 ns/op
WorkloadActual 12: 4194304 op, 519274200.00 ns, 123.8046 ns/op
WorkloadActual 13: 4194304 op, 510950800.00 ns, 121.8202 ns/op
WorkloadActual 14: 4194304 op, 514531600.00 ns, 122.6739 ns/op
WorkloadActual 15: 4194304 op, 515985800.00 ns, 123.0206 ns/op
// AfterActualRun
WorkloadResult 1: 4194304 op, 505148500.00 ns, 120.4368 ns/op
WorkloadResult 2: 4194304 op, 507445700.00 ns, 120.9845 ns/op
WorkloadResult 3: 4194304 op, 507836500.00 ns, 121.0777 ns/op
WorkloadResult 4: 4194304 op, 500524100.00 ns, 119.3342 ns/op
WorkloadResult 5: 4194304 op, 509723400.00 ns, 121.5275 ns/op
WorkloadResult 6: 4194304 op, 497617100.00 ns, 118.6412 ns/op
WorkloadResult 7: 4194304 op, 510638300.00 ns, 121.7457 ns/op
WorkloadResult 8: 4194304 op, 506847900.00 ns, 120.8420 ns/op
WorkloadResult 9: 4194304 op, 497077000.00 ns, 118.5124 ns/op
WorkloadResult 10: 4194304 op, 505358000.00 ns, 120.4867 ns/op
WorkloadResult 11: 4194304 op, 496229500.00 ns, 118.3103 ns/op
WorkloadResult 12: 4194304 op, 504461300.00 ns, 120.2729 ns/op
WorkloadResult 13: 4194304 op, 496137900.00 ns, 118.2885 ns/op
WorkloadResult 14: 4194304 op, 499718700.00 ns, 119.1422 ns/op
WorkloadResult 15: 4194304 op, 501172900.00 ns, 119.4889 ns/op
GC: 106 0 0 335550048 4194304
Threading: 2 0 4194304
// AfterAll
// Benchmark Process 15040 has exited with code 0
Mean = 119.939 ns, StdErr = 0.308 ns (0.26%), N = 15, StdDev = 1.194 ns
Min = 118.288 ns, Q1 = 118.892 ns, Median = 120.273 ns, Q3 = 120.913 ns, Max = 121.746 ns
IQR = 2.022 ns, LowerFence = 115.859 ns, UpperFence = 123.946 ns
ConfidenceInterval = [118.663 ns; 121.216 ns] (CI 99.9%), Margin = 1.276 ns (1.06% of Mean)
Skewness = -0.05, Kurtosis = 1.4, MValue = 2
// **************************
// Benchmark: UnRankTests.Unrank: DefaultJob [n=100, k=6]
// *** Execute ***
// Launch: 1 / 1
// Execute: dotnet "484488c8-1872-4c08-bc42-d7aff7418c0a.dll" --benchmarkName "PerformanceTests.CombinatorialNumberSystems.UnRankTests.Unrank(n: 100, k: 6)" --job "Default" --benchmarkId 4 in C:\dev\LottoGenerator\LG.Tests.BenchmarkDotNet\bin\Release\netcoreapp3.1\484488c8-1872-4c08-bc42-d7aff7418c0a\bin\Release\netcoreapp3.1
// BeforeAnythingElse
// Benchmark Process Environment Information:
// Runtime=.NET Core 3.1.13 (CoreCLR 4.700.21.11102, CoreFX 4.700.21.11602), X64 RyuJIT
// GC=Concurrent Workstation
// Job: DefaultJob
OverheadJitting 1: 1 op, 593100.00 ns, 593.1000 us/op
WorkloadJitting 1: 1 op, 2121800.00 ns, 2.1218 ms/op
OverheadJitting 2: 16 op, 717500.00 ns, 44.8438 us/op
WorkloadJitting 2: 16 op, 669300.00 ns, 41.8312 us/op
WorkloadPilot 1: 16 op, 4700.00 ns, 293.7500 ns/op
WorkloadPilot 2: 32 op, 5400.00 ns, 168.7500 ns/op
WorkloadPilot 3: 64 op, 10700.00 ns, 167.1875 ns/op
WorkloadPilot 4: 128 op, 18700.00 ns, 146.0938 ns/op
WorkloadPilot 5: 256 op, 43100.00 ns, 168.3594 ns/op
WorkloadPilot 6: 512 op, 69600.00 ns, 135.9375 ns/op
WorkloadPilot 7: 1024 op, 140000.00 ns, 136.7188 ns/op
WorkloadPilot 8: 2048 op, 321600.00 ns, 157.0312 ns/op
WorkloadPilot 9: 4096 op, 662700.00 ns, 161.7920 ns/op
WorkloadPilot 10: 8192 op, 1452400.00 ns, 177.2949 ns/op
WorkloadPilot 11: 16384 op, 2482400.00 ns, 151.5137 ns/op
WorkloadPilot 12: 32768 op, 4970800.00 ns, 151.6968 ns/op
WorkloadPilot 13: 65536 op, 9646900.00 ns, 147.2000 ns/op
WorkloadPilot 14: 131072 op, 18716200.00 ns, 142.7933 ns/op
WorkloadPilot 15: 262144 op, 37132500.00 ns, 141.6492 ns/op
WorkloadPilot 16: 524288 op, 73543700.00 ns, 140.2735 ns/op
WorkloadPilot 17: 1048576 op, 142992500.00 ns, 136.3683 ns/op
WorkloadPilot 18: 2097152 op, 287242800.00 ns, 136.9680 ns/op
WorkloadPilot 19: 4194304 op, 568879800.00 ns, 135.6315 ns/op
OverheadWarmup 1: 4194304 op, 14641800.00 ns, 3.4909 ns/op
OverheadWarmup 2: 4194304 op, 14444200.00 ns, 3.4438 ns/op
OverheadWarmup 3: 4194304 op, 14734800.00 ns, 3.5131 ns/op
OverheadWarmup 4: 4194304 op, 15189000.00 ns, 3.6213 ns/op
OverheadWarmup 5: 4194304 op, 15655900.00 ns, 3.7327 ns/op
OverheadWarmup 6: 4194304 op, 14601300.00 ns, 3.4812 ns/op
OverheadWarmup 7: 4194304 op, 15880100.00 ns, 3.7861 ns/op
OverheadWarmup 8: 4194304 op, 15340300.00 ns, 3.6574 ns/op
OverheadActual 1: 4194304 op, 14625000.00 ns, 3.4869 ns/op
OverheadActual 2: 4194304 op, 14632400.00 ns, 3.4886 ns/op
OverheadActual 3: 4194304 op, 14463500.00 ns, 3.4484 ns/op
OverheadActual 4: 4194304 op, 14520100.00 ns, 3.4619 ns/op
OverheadActual 5: 4194304 op, 14488500.00 ns, 3.4543 ns/op
OverheadActual 6: 4194304 op, 14327300.00 ns, 3.4159 ns/op
OverheadActual 7: 4194304 op, 14501900.00 ns, 3.4575 ns/op
OverheadActual 8: 4194304 op, 14446200.00 ns, 3.4442 ns/op
OverheadActual 9: 4194304 op, 14670700.00 ns, 3.4978 ns/op
OverheadActual 10: 4194304 op, 14532100.00 ns, 3.4647 ns/op
OverheadActual 11: 4194304 op, 14412100.00 ns, 3.4361 ns/op
OverheadActual 12: 4194304 op, 14401300.00 ns, 3.4335 ns/op
OverheadActual 13: 4194304 op, 14518300.00 ns, 3.4614 ns/op
OverheadActual 14: 4194304 op, 14843000.00 ns, 3.5388 ns/op
OverheadActual 15: 4194304 op, 16265600.00 ns, 3.8780 ns/op
WorkloadWarmup 1: 4194304 op, 576814300.00 ns, 137.5232 ns/op
WorkloadWarmup 2: 4194304 op, 576153700.00 ns, 137.3657 ns/op
WorkloadWarmup 3: 4194304 op, 569435200.00 ns, 135.7639 ns/op
WorkloadWarmup 4: 4194304 op, 570428400.00 ns, 136.0007 ns/op
WorkloadWarmup 5: 4194304 op, 580443100.00 ns, 138.3884 ns/op
WorkloadWarmup 6: 4194304 op, 572420200.00 ns, 136.4756 ns/op
WorkloadWarmup 7: 4194304 op, 577379300.00 ns, 137.6580 ns/op
WorkloadWarmup 8: 4194304 op, 570444200.00 ns, 136.0045 ns/op
// BeforeActualRun
WorkloadActual 1: 4194304 op, 572165500.00 ns, 136.4149 ns/op
WorkloadActual 2: 4194304 op, 570693800.00 ns, 136.0640 ns/op
WorkloadActual 3: 4194304 op, 570851000.00 ns, 136.1015 ns/op
WorkloadActual 4: 4194304 op, 580055900.00 ns, 138.2961 ns/op
WorkloadActual 5: 4194304 op, 572491200.00 ns, 136.4925 ns/op
WorkloadActual 6: 4194304 op, 575432400.00 ns, 137.1938 ns/op
WorkloadActual 7: 4194304 op, 577937600.00 ns, 137.7911 ns/op
WorkloadActual 8: 4194304 op, 577493900.00 ns, 137.6853 ns/op
WorkloadActual 9: 4194304 op, 762714400.00 ns, 181.8453 ns/op
WorkloadActual 10: 4194304 op, 579652500.00 ns, 138.1999 ns/op
WorkloadActual 11: 4194304 op, 572558900.00 ns, 136.5087 ns/op
WorkloadActual 12: 4194304 op, 581160300.00 ns, 138.5594 ns/op
WorkloadActual 13: 4194304 op, 576347400.00 ns, 137.4119 ns/op
WorkloadActual 14: 4194304 op, 571927900.00 ns, 136.3582 ns/op
WorkloadActual 15: 4194304 op, 575998600.00 ns, 137.3288 ns/op
// AfterActualRun
WorkloadResult 1: 4194304 op, 557647200.00 ns, 132.9535 ns/op
WorkloadResult 2: 4194304 op, 556175500.00 ns, 132.6026 ns/op
WorkloadResult 3: 4194304 op, 556332700.00 ns, 132.6401 ns/op
WorkloadResult 4: 4194304 op, 565537600.00 ns, 134.8347 ns/op
WorkloadResult 5: 4194304 op, 557972900.00 ns, 133.0311 ns/op
WorkloadResult 6: 4194304 op, 560914100.00 ns, 133.7323 ns/op
WorkloadResult 7: 4194304 op, 563419300.00 ns, 134.3296 ns/op
WorkloadResult 8: 4194304 op, 562975600.00 ns, 134.2238 ns/op
WorkloadResult 9: 4194304 op, 565134200.00 ns, 134.7385 ns/op
WorkloadResult 10: 4194304 op, 558040600.00 ns, 133.0472 ns/op
WorkloadResult 11: 4194304 op, 566642000.00 ns, 135.0980 ns/op
WorkloadResult 12: 4194304 op, 561829100.00 ns, 133.9505 ns/op
WorkloadResult 13: 4194304 op, 557409600.00 ns, 132.8968 ns/op
WorkloadResult 14: 4194304 op, 561480300.00 ns, 133.8673 ns/op
GC: 106 0 0 335550048 4194304
Threading: 2 0 4194304
// AfterAll
// Benchmark Process 12384 has exited with code 0
Mean = 133.710 ns, StdErr = 0.228 ns (0.17%), N = 14, StdDev = 0.854 ns
Min = 132.603 ns, Q1 = 132.973 ns, Median = 133.800 ns, Q3 = 134.303 ns, Max = 135.098 ns
IQR = 1.330 ns, LowerFence = 130.977 ns, UpperFence = 136.299 ns
ConfidenceInterval = [132.747 ns; 134.674 ns] (CI 99.9%), Margin = 0.964 ns (0.72% of Mean)
Skewness = 0.16, Kurtosis = 1.43, MValue = 2
// **************************
// Benchmark: UnRankTests.FastUnrank: DefaultJob [n=100, k=6]
// *** Execute ***
// Launch: 1 / 1
// Execute: dotnet "484488c8-1872-4c08-bc42-d7aff7418c0a.dll" --benchmarkName "PerformanceTests.CombinatorialNumberSystems.UnRankTests.FastUnrank(n: 100, k: 6)" --job "Default" --benchmarkId 5 in C:\dev\LottoGenerator\LG.Tests.BenchmarkDotNet\bin\Release\netcoreapp3.1\484488c8-1872-4c08-bc42-d7aff7418c0a\bin\Release\netcoreapp3.1
// BeforeAnythingElse
// Benchmark Process Environment Information:
// Runtime=.NET Core 3.1.13 (CoreCLR 4.700.21.11102, CoreFX 4.700.21.11602), X64 RyuJIT
// GC=Concurrent Workstation
// Job: DefaultJob
OverheadJitting 1: 1 op, 410700.00 ns, 410.7000 us/op
WorkloadJitting 1: 1 op, 1865300.00 ns, 1.8653 ms/op
OverheadJitting 2: 16 op, 1038400.00 ns, 64.9000 us/op
WorkloadJitting 2: 16 op, 745900.00 ns, 46.6187 us/op
WorkloadPilot 1: 16 op, 5000.00 ns, 312.5000 ns/op
WorkloadPilot 2: 32 op, 6500.00 ns, 203.1250 ns/op
WorkloadPilot 3: 64 op, 9900.00 ns, 154.6875 ns/op
WorkloadPilot 4: 128 op, 19800.00 ns, 154.6875 ns/op
WorkloadPilot 5: 256 op, 38600.00 ns, 150.7812 ns/op
WorkloadPilot 6: 512 op, 71700.00 ns, 140.0391 ns/op
WorkloadPilot 7: 1024 op, 144000.00 ns, 140.6250 ns/op
WorkloadPilot 8: 2048 op, 326200.00 ns, 159.2773 ns/op
WorkloadPilot 9: 4096 op, 607300.00 ns, 148.2666 ns/op
WorkloadPilot 10: 8192 op, 1212900.00 ns, 148.0591 ns/op
WorkloadPilot 11: 16384 op, 2511200.00 ns, 153.2715 ns/op
WorkloadPilot 12: 32768 op, 5345000.00 ns, 163.1165 ns/op
WorkloadPilot 13: 65536 op, 9344100.00 ns, 142.5797 ns/op
WorkloadPilot 14: 131072 op, 18956200.00 ns, 144.6243 ns/op
WorkloadPilot 15: 262144 op, 37456400.00 ns, 142.8848 ns/op
WorkloadPilot 16: 524288 op, 73338700.00 ns, 139.8825 ns/op
WorkloadPilot 17: 1048576 op, 143464200.00 ns, 136.8181 ns/op
WorkloadPilot 18: 2097152 op, 284971900.00 ns, 135.8852 ns/op
WorkloadPilot 19: 4194304 op, 579334200.00 ns, 138.1240 ns/op
OverheadWarmup 1: 4194304 op, 14721200.00 ns, 3.5098 ns/op
OverheadWarmup 2: 4194304 op, 14471400.00 ns, 3.4503 ns/op
OverheadWarmup 3: 4194304 op, 15066000.00 ns, 3.5920 ns/op
OverheadWarmup 4: 4194304 op, 14693100.00 ns, 3.5031 ns/op
OverheadWarmup 5: 4194304 op, 14557400.00 ns, 3.4708 ns/op
OverheadWarmup 6: 4194304 op, 14462300.00 ns, 3.4481 ns/op
OverheadWarmup 7: 4194304 op, 14482500.00 ns, 3.4529 ns/op
OverheadWarmup 8: 4194304 op, 14374700.00 ns, 3.4272 ns/op
OverheadActual 1: 4194304 op, 14527500.00 ns, 3.4636 ns/op
OverheadActual 2: 4194304 op, 14813400.00 ns, 3.5318 ns/op
OverheadActual 3: 4194304 op, 14553100.00 ns, 3.4697 ns/op
OverheadActual 4: 4194304 op, 14614900.00 ns, 3.4845 ns/op
OverheadActual 5: 4194304 op, 14471900.00 ns, 3.4504 ns/op
OverheadActual 6: 4194304 op, 14571900.00 ns, 3.4742 ns/op
OverheadActual 7: 4194304 op, 14341200.00 ns, 3.4192 ns/op
OverheadActual 8: 4194304 op, 14477300.00 ns, 3.4517 ns/op
OverheadActual 9: 4194304 op, 14388800.00 ns, 3.4306 ns/op
OverheadActual 10: 4194304 op, 14477600.00 ns, 3.4517 ns/op
OverheadActual 11: 4194304 op, 15308900.00 ns, 3.6499 ns/op
OverheadActual 12: 4194304 op, 14528600.00 ns, 3.4639 ns/op
OverheadActual 13: 4194304 op, 14537900.00 ns, 3.4661 ns/op
OverheadActual 14: 4194304 op, 15407700.00 ns, 3.6735 ns/op
OverheadActual 15: 4194304 op, 14869900.00 ns, 3.5453 ns/op
WorkloadWarmup 1: 4194304 op, 580760700.00 ns, 138.4641 ns/op
WorkloadWarmup 2: 4194304 op, 576554300.00 ns, 137.4613 ns/op
WorkloadWarmup 3: 4194304 op, 574201300.00 ns, 136.9003 ns/op
WorkloadWarmup 4: 4194304 op, 575960200.00 ns, 137.3196 ns/op
WorkloadWarmup 5: 4194304 op, 577918400.00 ns, 137.7865 ns/op
WorkloadWarmup 6: 4194304 op, 572538900.00 ns, 136.5039 ns/op
WorkloadWarmup 7: 4194304 op, 579916100.00 ns, 138.2628 ns/op
WorkloadWarmup 8: 4194304 op, 573877800.00 ns, 136.8231 ns/op
// BeforeActualRun
WorkloadActual 1: 4194304 op, 577204400.00 ns, 137.6163 ns/op
WorkloadActual 2: 4194304 op, 580608000.00 ns, 138.4277 ns/op
WorkloadActual 3: 4194304 op, 573343400.00 ns, 136.6957 ns/op
WorkloadActual 4: 4194304 op, 574820700.00 ns, 137.0479 ns/op
WorkloadActual 5: 4194304 op, 576053100.00 ns, 137.3418 ns/op
WorkloadActual 6: 4194304 op, 577501400.00 ns, 137.6871 ns/op
WorkloadActual 7: 4194304 op, 571874900.00 ns, 136.3456 ns/op
WorkloadActual 8: 4194304 op, 573001200.00 ns, 136.6141 ns/op
WorkloadActual 9: 4194304 op, 576679200.00 ns, 137.4910 ns/op
WorkloadActual 10: 4194304 op, 585404300.00 ns, 139.5713 ns/op
WorkloadActual 11: 4194304 op, 578037900.00 ns, 137.8150 ns/op
WorkloadActual 12: 4194304 op, 572601700.00 ns, 136.5189 ns/op
WorkloadActual 13: 4194304 op, 578322600.00 ns, 137.8829 ns/op
WorkloadActual 14: 4194304 op, 577917400.00 ns, 137.7862 ns/op
WorkloadActual 15: 4194304 op, 572330600.00 ns, 136.4542 ns/op
// AfterActualRun
WorkloadResult 1: 4194304 op, 562666500.00 ns, 134.1501 ns/op
WorkloadResult 2: 4194304 op, 566070100.00 ns, 134.9616 ns/op
WorkloadResult 3: 4194304 op, 558805500.00 ns, 133.2296 ns/op
WorkloadResult 4: 4194304 op, 560282800.00 ns, 133.5818 ns/op
WorkloadResult 5: 4194304 op, 561515200.00 ns, 133.8757 ns/op
WorkloadResult 6: 4194304 op, 562963500.00 ns, 134.2210 ns/op
WorkloadResult 7: 4194304 op, 557337000.00 ns, 132.8795 ns/op
WorkloadResult 8: 4194304 op, 558463300.00 ns, 133.1480 ns/op
WorkloadResult 9: 4194304 op, 562141300.00 ns, 134.0249 ns/op
WorkloadResult 10: 4194304 op, 563500000.00 ns, 134.3489 ns/op
WorkloadResult 11: 4194304 op, 558063800.00 ns, 133.0528 ns/op
WorkloadResult 12: 4194304 op, 563784700.00 ns, 134.4167 ns/op
WorkloadResult 13: 4194304 op, 563379500.00 ns, 134.3201 ns/op
WorkloadResult 14: 4194304 op, 557792700.00 ns, 132.9881 ns/op
GC: 106 0 0 335550048 4194304
Threading: 2 0 4194304
// AfterAll
// Benchmark Process 22140 has exited with code 0
Mean = 133.800 ns, StdErr = 0.174 ns (0.13%), N = 14, StdDev = 0.652 ns
Min = 132.879 ns, Q1 = 133.168 ns, Median = 133.950 ns, Q3 = 134.295 ns, Max = 134.962 ns
IQR = 1.127 ns, LowerFence = 131.478 ns, UpperFence = 135.986 ns
ConfidenceInterval = [133.065 ns; 134.535 ns] (CI 99.9%), Margin = 0.735 ns (0.55% of Mean)
Skewness = 0.01, Kurtosis = 1.56, MValue = 2
// ***** BenchmarkRunner: Finish *****
// * Export *
BenchmarkDotNet.Artifacts\results\PerformanceTests.CombinatorialNumberSystems.UnRankTests-report.csv
BenchmarkDotNet.Artifacts\results\PerformanceTests.CombinatorialNumberSystems.UnRankTests-report-github.md
BenchmarkDotNet.Artifacts\results\PerformanceTests.CombinatorialNumberSystems.UnRankTests-report.html
// * Detailed results *
UnRankTests.Unrank: DefaultJob [n=5, k=3]
Runtime = .NET Core 3.1.13 (CoreCLR 4.700.21.11102, CoreFX 4.700.21.11602), X64 RyuJIT; GC = Concurrent Workstation
Mean = 46.737 ns, StdErr = 0.046 ns (0.10%), N = 14, StdDev = 0.172 ns
Min = 46.447 ns, Q1 = 46.656 ns, Median = 46.723 ns, Q3 = 46.809 ns, Max = 47.060 ns
IQR = 0.153 ns, LowerFence = 46.426 ns, UpperFence = 47.039 ns
ConfidenceInterval = [46.542 ns; 46.932 ns] (CI 99.9%), Margin = 0.195 ns (0.42% of Mean)
Skewness = 0.32, Kurtosis = 2.54, MValue = 2
-------------------- Histogram --------------------
[46.353 ns ; 47.154 ns) | @@@@@@@@@@@@@@
---------------------------------------------------
UnRankTests.FastUnrank: DefaultJob [n=5, k=3]
Runtime = .NET Core 3.1.13 (CoreCLR 4.700.21.11102, CoreFX 4.700.21.11602), X64 RyuJIT; GC = Concurrent Workstation
Mean = 42.959 ns, StdErr = 0.053 ns (0.12%), N = 12, StdDev = 0.184 ns
Min = 42.550 ns, Q1 = 42.864 ns, Median = 42.955 ns, Q3 = 43.092 ns, Max = 43.198 ns
IQR = 0.228 ns, LowerFence = 42.521 ns, UpperFence = 43.434 ns
ConfidenceInterval = [42.723 ns; 43.194 ns] (CI 99.9%), Margin = 0.236 ns (0.55% of Mean)
Skewness = -0.56, Kurtosis = 2.61, MValue = 2
-------------------- Histogram --------------------
[42.444 ns ; 43.303 ns) | @@@@@@@@@@@@
---------------------------------------------------
UnRankTests.Unrank: DefaultJob [n=45, k=6]
Runtime = .NET Core 3.1.13 (CoreCLR 4.700.21.11102, CoreFX 4.700.21.11602), X64 RyuJIT; GC = Concurrent Workstation
Mean = 122.062 ns, StdErr = 0.294 ns (0.24%), N = 15, StdDev = 1.137 ns
Min = 120.250 ns, Q1 = 121.438 ns, Median = 121.925 ns, Q3 = 122.634 ns, Max = 124.104 ns
IQR = 1.196 ns, LowerFence = 119.643 ns, UpperFence = 124.428 ns
ConfidenceInterval = [120.846 ns; 123.277 ns] (CI 99.9%), Margin = 1.216 ns (1.00% of Mean)
Skewness = 0.37, Kurtosis = 2.03, MValue = 2
-------------------- Histogram --------------------
[119.645 ns ; 124.710 ns) | @@@@@@@@@@@@@@@
---------------------------------------------------
UnRankTests.FastUnrank: DefaultJob [n=45, k=6]
Runtime = .NET Core 3.1.13 (CoreCLR 4.700.21.11102, CoreFX 4.700.21.11602), X64 RyuJIT; GC = Concurrent Workstation
Mean = 119.939 ns, StdErr = 0.308 ns (0.26%), N = 15, StdDev = 1.194 ns
Min = 118.288 ns, Q1 = 118.892 ns, Median = 120.273 ns, Q3 = 120.913 ns, Max = 121.746 ns
IQR = 2.022 ns, LowerFence = 115.859 ns, UpperFence = 123.946 ns
ConfidenceInterval = [118.663 ns; 121.216 ns] (CI 99.9%), Margin = 1.276 ns (1.06% of Mean)
Skewness = -0.05, Kurtosis = 1.4, MValue = 2
-------------------- Histogram --------------------
[117.653 ns ; 122.381 ns) | @@@@@@@@@@@@@@@
---------------------------------------------------
UnRankTests.Unrank: DefaultJob [n=100, k=6]
Runtime = .NET Core 3.1.13 (CoreCLR 4.700.21.11102, CoreFX 4.700.21.11602), X64 RyuJIT; GC = Concurrent Workstation
Mean = 133.710 ns, StdErr = 0.228 ns (0.17%), N = 14, StdDev = 0.854 ns
Min = 132.603 ns, Q1 = 132.973 ns, Median = 133.800 ns, Q3 = 134.303 ns, Max = 135.098 ns
IQR = 1.330 ns, LowerFence = 130.977 ns, UpperFence = 136.299 ns
ConfidenceInterval = [132.747 ns; 134.674 ns] (CI 99.9%), Margin = 0.964 ns (0.72% of Mean)
Skewness = 0.16, Kurtosis = 1.43, MValue = 2
-------------------- Histogram --------------------
[132.137 ns ; 135.563 ns) | @@@@@@@@@@@@@@
---------------------------------------------------
UnRankTests.FastUnrank: DefaultJob [n=100, k=6]
Runtime = .NET Core 3.1.13 (CoreCLR 4.700.21.11102, CoreFX 4.700.21.11602), X64 RyuJIT; GC = Concurrent Workstation
Mean = 133.800 ns, StdErr = 0.174 ns (0.13%), N = 14, StdDev = 0.652 ns
Min = 132.879 ns, Q1 = 133.168 ns, Median = 133.950 ns, Q3 = 134.295 ns, Max = 134.962 ns
IQR = 1.127 ns, LowerFence = 131.478 ns, UpperFence = 135.986 ns
ConfidenceInterval = [133.065 ns; 134.535 ns] (CI 99.9%), Margin = 0.735 ns (0.55% of Mean)
Skewness = 0.01, Kurtosis = 1.56, MValue = 2
-------------------- Histogram --------------------
[132.805 ns ; 135.317 ns) | @@@@@@@@@@@@@@
---------------------------------------------------
// * Summary *
BenchmarkDotNet=v0.12.1, OS=Windows 10.0.19042
Intel Core i5-1035G4 CPU 1.10GHz, 1 CPU, 8 logical and 4 physical cores
.NET Core SDK=5.0.104
[Host] : .NET Core 3.1.13 (CoreCLR 4.700.21.11102, CoreFX 4.700.21.11602), X64 RyuJIT
DefaultJob : .NET Core 3.1.13 (CoreCLR 4.700.21.11102, CoreFX 4.700.21.11602), X64 RyuJIT
| Method | n | k | Mean | Error | StdDev | Ratio | Gen 0 | Gen 1 | Gen 2 | Allocated |
|----------- |---- |-- |----------:|---------:|---------:|------:|-------:|------:|------:|----------:|
| Unrank | 5 | 3 | 46.74 ns | 0.195 ns | 0.172 ns | 1.00 | 0.0229 | - | - | 72 B |
| FastUnrank | 5 | 3 | 42.96 ns | 0.236 ns | 0.184 ns | 0.92 | 0.0229 | - | - | 72 B |
| | | | | | | | | | | |
| Unrank | 45 | 6 | 122.06 ns | 1.216 ns | 1.137 ns | 1.00 | 0.0253 | - | - | 80 B |
| FastUnrank | 45 | 6 | 119.94 ns | 1.276 ns | 1.194 ns | 0.98 | 0.0253 | - | - | 80 B |
| | | | | | | | | | | |
| Unrank | 100 | 6 | 133.71 ns | 0.964 ns | 0.854 ns | 1.00 | 0.0253 | - | - | 80 B |
| FastUnrank | 100 | 6 | 133.80 ns | 0.735 ns | 0.652 ns | 1.00 | 0.0253 | - | - | 80 B |
// * Hints *
Outliers
UnRankTests.Unrank: Default -> 1 outlier was removed (50.35 ns)
UnRankTests.FastUnrank: Default -> 3 outliers were removed (47.23 ns..47.35 ns)
UnRankTests.Unrank: Default -> 1 outlier was removed (181.85 ns)
UnRankTests.FastUnrank: Default -> 1 outlier was removed (139.57 ns)
// * Legends *
n : Value of the 'n' parameter
k : Value of the 'k' parameter
Mean : Arithmetic mean of all measurements
Error : Half of 99.9% confidence interval
StdDev : Standard deviation of all measurements
Ratio : Mean of the ratio distribution ([Current]/[Baseline])
Gen 0 : GC Generation 0 collects per 1000 operations
Gen 1 : GC Generation 1 collects per 1000 operations
Gen 2 : GC Generation 2 collects per 1000 operations
Allocated : Allocated memory per single operation (managed only, inclusive, 1KB = 1024B)
1 ns : 1 Nanosecond (0.000000001 sec)
// * Diagnostic Output - MemoryDiagnoser *
// ***** BenchmarkRunner: End *****
// ** Remained 0 benchmark(s) to run **
Run time: 00:01:41 (101.48 sec), executed benchmarks: 6
Global total time: 00:01:46 (106.75 sec), executed benchmarks: 6
// * Artifacts cleanup *
using BenchmarkDotNet.Attributes;
using LG.App.Services.Combinations;
using System.Collections.Generic;
namespace PerformanceTests.CombinatorialNumberSystems
{
[MemoryDiagnoser]
public class UnRankTests
{
/// <summary>Test data for benchmark tests. The first digit is N, the second is K.</summary>
public IEnumerable<object[]> NKPairs()
{
yield return new object[] { 5, 3 };
yield return new object[] { 45, 6 };
yield return new object[] { 100, 6 };
}
[Benchmark(Baseline = true)]
[ArgumentsSource(nameof(NKPairs))]
public int[] Unrank(int n, int k)
{
var cns = new CombinatorialNumberSystem(n, k);
return cns.Unrank(1);
}
[Benchmark]
[ArgumentsSource(nameof(NKPairs))]
public int[] FastUnrank(int n, int k)
{
var fastCns = new FastCombinatorialNumberSystem(n, k);
return fastCns.Unrank(1);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment