Skip to content

Instantly share code, notes, and snippets.

@the9ball
Created December 22, 2023 09:59
Show Gist options
  • Select an option

  • Save the9ball/24dcb9cb5036c059ec39bf249d87f205 to your computer and use it in GitHub Desktop.

Select an option

Save the9ball/24dcb9cb5036c059ec39bf249d87f205 to your computer and use it in GitHub Desktop.
C# Advent Calendar 2023 : Benchmark2
using BenchmarkDotNet.Attributes;
using BenchmarkDotNet.Running;
BenchmarkRunner.Run<Runner>();
record struct KVPString(int Key, int Value)
{
public override string ToString() => $"{Key:000000} : {Value}";
}
record struct KVPSpanFormattable(int Key, int Value) : ISpanFormattable
{
// これはなくてもよい
// public override string ToString() => $"{Key:000000} : {Value}";
public string ToString(string? format, IFormatProvider? formatProvider)
{
var buffer = (stackalloc char[128]);
if (!TryFormat(buffer, out var charsWritten, [], formatProvider)) return "";
return new(buffer[..charsWritten]);
}
public bool TryFormat(Span<char> destination, out int charsWritten, ReadOnlySpan<char> format, IFormatProvider? provider)
{
charsWritten = 0;
int cw;
if (!Key.TryFormat(destination, out cw, "000000", provider)) return false;
destination = destination[cw..];
charsWritten += cw;
if (destination.Length < 3) return false;
destination[0] = ' ';
destination[1] = ':';
destination[2] = ' ';
destination = destination[3..];
charsWritten += 3;
if (!Value.TryFormat(destination, out cw, format, provider)) return false;
//destination = destination[cw..];
charsWritten += cw;
return true;
}
}
record struct KVPSpanFormattable2(int Key, int Value) : ISpanFormattable
{
public string ToString(string? format, IFormatProvider? formatProvider)
=> $"{Key:000000} : {Value}";
public bool TryFormat(Span<char> destination, out int charsWritten, ReadOnlySpan<char> format, IFormatProvider? provider)
=> destination.TryWrite($"{Key:000000} : {Value}", out charsWritten);
}
[MemoryDiagnoser]
public class Runner
{
private readonly int seed = (int)DateTime.Now.Ticks;
private const int LoopCount = 1_000_000;
[Benchmark]
public void KVPString()
{
var r = new Random(seed);
for (int i = 0; i < LoopCount; i++)
{
var kvp = new KVPString(r.Next(), r.Next());
_ = $"--{kvp}--";
}
}
[Benchmark]
public void KVPSpanFormattable()
{
var r = new Random(seed);
for (int i = 0; i < LoopCount; i++)
{
var kvp = new KVPSpanFormattable(r.Next(), r.Next());
_ = $"--{kvp}--";
}
}
[Benchmark]
public void KVPSpanFormattable2()
{
var r = new Random(seed);
for (int i = 0; i < LoopCount; i++)
{
var kvp = new KVPSpanFormattable2(r.Next(), r.Next());
_ = $"--{kvp}--";
}
}
}
// Validating benchmarks:
// ***** BenchmarkRunner: Start *****
// ***** Found 3 benchmark(s) in total *****
// ***** Building 1 exe(s) in Parallel: Start *****
// start dotnet restore /p:UseSharedCompilation=false /p:BuildInParallel=false /m:1 /p:Deterministic=true /p:Optimize=true in C:\Users\syasui\work\SandboxConsole\Benchmark\bin\Release\net8.0\c5644a83-9565-4dd2-bdab-772eba9d5b4d
// command took 1.45 sec and exited with 0
// start dotnet build -c Release --no-restore /p:UseSharedCompilation=false /p:BuildInParallel=false /m:1 /p:Deterministic=true /p:Optimize=true in C:\Users\syasui\work\SandboxConsole\Benchmark\bin\Release\net8.0\c5644a83-9565-4dd2-bdab-772eba9d5b4d
// command took 15.73 sec and exited with 1
// start dotnet build -c Release --no-restore --no-dependencies /p:UseSharedCompilation=false /p:BuildInParallel=false /m:1 /p:Deterministic=true /p:Optimize=true in C:\Users\syasui\work\SandboxConsole\Benchmark\bin\Release\net8.0\c5644a83-9565-4dd2-bdab-772eba9d5b4d
// command took 2.42 sec and exited with 0
// ***** Done, took 00:00:19 (19.69 sec) *****
// Found 3 benchmarks:
// Runner.KVPString: DefaultJob
// Runner.KVPSpanFormattable: DefaultJob
// Runner.KVPSpanFormattable2: DefaultJob
Setup power plan (GUID: 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c FriendlyName: 高パフォーマンス)
// **************************
// Benchmark: Runner.KVPString: DefaultJob
// *** Execute ***
// Launch: 1 / 1
// Execute: dotnet c5644a83-9565-4dd2-bdab-772eba9d5b4d.dll --anonymousPipes 1968 1940 --benchmarkName Runner.KVPString --job Default --benchmarkId 0 in C:\Users\syasui\work\SandboxConsole\Benchmark\bin\Release\net8.0\c5644a83-9565-4dd2-bdab-772eba9d5b4d\bin\Release\net8.0
// BeforeAnythingElse
// Benchmark Process Environment Information:
// BenchmarkDotNet v0.13.11
// Runtime=.NET 8.0.0 (8.0.23.53103), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
// GC=Concurrent Workstation
// HardwareIntrinsics=AVX-512F+CD+BW+DQ+VL+VBMI,AES,BMI1,BMI2,FMA,LZCNT,PCLMUL,POPCNT VectorSize=256
// Job: DefaultJob
OverheadJitting 1: 1 op, 155700.00 ns, 155.7000 us/op
WorkloadJitting 1: 1 op, 287130400.00 ns, 287.1304 ms/op
WorkloadPilot 1: 2 op, 347444600.00 ns, 173.7223 ms/op
WorkloadPilot 2: 3 op, 535250700.00 ns, 178.4169 ms/op
WorkloadWarmup 1: 3 op, 509481900.00 ns, 169.8273 ms/op
WorkloadWarmup 2: 3 op, 516009100.00 ns, 172.0030 ms/op
WorkloadWarmup 3: 3 op, 515354500.00 ns, 171.7848 ms/op
WorkloadWarmup 4: 3 op, 519105500.00 ns, 173.0352 ms/op
WorkloadWarmup 5: 3 op, 512540400.00 ns, 170.8468 ms/op
WorkloadWarmup 6: 3 op, 509749300.00 ns, 169.9164 ms/op
// BeforeActualRun
WorkloadActual 1: 3 op, 516044200.00 ns, 172.0147 ms/op
WorkloadActual 2: 3 op, 527664300.00 ns, 175.8881 ms/op
WorkloadActual 3: 3 op, 529903500.00 ns, 176.6345 ms/op
WorkloadActual 4: 3 op, 565168700.00 ns, 188.3896 ms/op
WorkloadActual 5: 3 op, 560664800.00 ns, 186.8883 ms/op
WorkloadActual 6: 3 op, 570392600.00 ns, 190.1309 ms/op
WorkloadActual 7: 3 op, 549693900.00 ns, 183.2313 ms/op
WorkloadActual 8: 3 op, 567808500.00 ns, 189.2695 ms/op
WorkloadActual 9: 3 op, 545298600.00 ns, 181.7662 ms/op
WorkloadActual 10: 3 op, 584494600.00 ns, 194.8315 ms/op
WorkloadActual 11: 3 op, 574022500.00 ns, 191.3408 ms/op
WorkloadActual 12: 3 op, 563851200.00 ns, 187.9504 ms/op
WorkloadActual 13: 3 op, 575313700.00 ns, 191.7712 ms/op
WorkloadActual 14: 3 op, 539743600.00 ns, 179.9145 ms/op
WorkloadActual 15: 3 op, 534104800.00 ns, 178.0349 ms/op
WorkloadActual 16: 3 op, 548094700.00 ns, 182.6982 ms/op
WorkloadActual 17: 3 op, 545247200.00 ns, 181.7491 ms/op
WorkloadActual 18: 3 op, 560221900.00 ns, 186.7406 ms/op
WorkloadActual 19: 3 op, 544813400.00 ns, 181.6045 ms/op
WorkloadActual 20: 3 op, 553344700.00 ns, 184.4482 ms/op
WorkloadActual 21: 3 op, 540050300.00 ns, 180.0168 ms/op
WorkloadActual 22: 3 op, 583950300.00 ns, 194.6501 ms/op
WorkloadActual 23: 3 op, 540729500.00 ns, 180.2432 ms/op
WorkloadActual 24: 3 op, 589981500.00 ns, 196.6605 ms/op
WorkloadActual 25: 3 op, 534093400.00 ns, 178.0311 ms/op
WorkloadActual 26: 3 op, 567986800.00 ns, 189.3289 ms/op
WorkloadActual 27: 3 op, 536662300.00 ns, 178.8874 ms/op
WorkloadActual 28: 3 op, 539933200.00 ns, 179.9777 ms/op
WorkloadActual 29: 3 op, 563498200.00 ns, 187.8327 ms/op
WorkloadActual 30: 3 op, 542188300.00 ns, 180.7294 ms/op
WorkloadActual 31: 3 op, 569425600.00 ns, 189.8085 ms/op
WorkloadActual 32: 3 op, 552760900.00 ns, 184.2536 ms/op
WorkloadActual 33: 3 op, 566610800.00 ns, 188.8703 ms/op
WorkloadActual 34: 3 op, 538207800.00 ns, 179.4026 ms/op
WorkloadActual 35: 3 op, 545047100.00 ns, 181.6824 ms/op
// AfterActualRun
WorkloadResult 1: 3 op, 516044200.00 ns, 172.0147 ms/op
WorkloadResult 2: 3 op, 527664300.00 ns, 175.8881 ms/op
WorkloadResult 3: 3 op, 529903500.00 ns, 176.6345 ms/op
WorkloadResult 4: 3 op, 565168700.00 ns, 188.3896 ms/op
WorkloadResult 5: 3 op, 560664800.00 ns, 186.8883 ms/op
WorkloadResult 6: 3 op, 570392600.00 ns, 190.1309 ms/op
WorkloadResult 7: 3 op, 549693900.00 ns, 183.2313 ms/op
WorkloadResult 8: 3 op, 567808500.00 ns, 189.2695 ms/op
WorkloadResult 9: 3 op, 545298600.00 ns, 181.7662 ms/op
WorkloadResult 10: 3 op, 584494600.00 ns, 194.8315 ms/op
WorkloadResult 11: 3 op, 574022500.00 ns, 191.3408 ms/op
WorkloadResult 12: 3 op, 563851200.00 ns, 187.9504 ms/op
WorkloadResult 13: 3 op, 575313700.00 ns, 191.7712 ms/op
WorkloadResult 14: 3 op, 539743600.00 ns, 179.9145 ms/op
WorkloadResult 15: 3 op, 534104800.00 ns, 178.0349 ms/op
WorkloadResult 16: 3 op, 548094700.00 ns, 182.6982 ms/op
WorkloadResult 17: 3 op, 545247200.00 ns, 181.7491 ms/op
WorkloadResult 18: 3 op, 560221900.00 ns, 186.7406 ms/op
WorkloadResult 19: 3 op, 544813400.00 ns, 181.6045 ms/op
WorkloadResult 20: 3 op, 553344700.00 ns, 184.4482 ms/op
WorkloadResult 21: 3 op, 540050300.00 ns, 180.0168 ms/op
WorkloadResult 22: 3 op, 583950300.00 ns, 194.6501 ms/op
WorkloadResult 23: 3 op, 540729500.00 ns, 180.2432 ms/op
WorkloadResult 24: 3 op, 589981500.00 ns, 196.6605 ms/op
WorkloadResult 25: 3 op, 534093400.00 ns, 178.0311 ms/op
WorkloadResult 26: 3 op, 567986800.00 ns, 189.3289 ms/op
WorkloadResult 27: 3 op, 536662300.00 ns, 178.8874 ms/op
WorkloadResult 28: 3 op, 539933200.00 ns, 179.9777 ms/op
WorkloadResult 29: 3 op, 563498200.00 ns, 187.8327 ms/op
WorkloadResult 30: 3 op, 542188300.00 ns, 180.7294 ms/op
WorkloadResult 31: 3 op, 569425600.00 ns, 189.8085 ms/op
WorkloadResult 32: 3 op, 552760900.00 ns, 184.2536 ms/op
WorkloadResult 33: 3 op, 566610800.00 ns, 188.8703 ms/op
WorkloadResult 34: 3 op, 538207800.00 ns, 179.4026 ms/op
WorkloadResult 35: 3 op, 545047100.00 ns, 181.6824 ms/op
// GC: 52 0 0 443214592 3
// Threading: 0 0 3
// AfterAll
// Benchmark Process 48172 has exited with code 0.
Mean = 184.448 ms, StdErr = 1.002 ms (0.54%), N = 35, StdDev = 5.927 ms
Min = 172.015 ms, Q1 = 179.997 ms, Median = 183.231 ms, Q3 = 189.070 ms, Max = 196.661 ms
IQR = 9.073 ms, LowerFence = 166.388 ms, UpperFence = 202.679 ms
ConfidenceInterval = [180.840 ms; 188.055 ms] (CI 99.9%), Margin = 3.607 ms (1.96% of Mean)
Skewness = 0.17, Kurtosis = 2.17, MValue = 3.14
// ** Remained 2 (66.7%) benchmark(s) to run. Estimated finish 2023-12-22 18:56 (0h 0m from now) **
Setup power plan (GUID: 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c FriendlyName: 高パフォーマンス)
// **************************
// Benchmark: Runner.KVPSpanFormattable: DefaultJob
// *** Execute ***
// Launch: 1 / 1
// Execute: dotnet c5644a83-9565-4dd2-bdab-772eba9d5b4d.dll --anonymousPipes 1984 1980 --benchmarkName Runner.KVPSpanFormattable --job Default --benchmarkId 1 in C:\Users\syasui\work\SandboxConsole\Benchmark\bin\Release\net8.0\c5644a83-9565-4dd2-bdab-772eba9d5b4d\bin\Release\net8.0
// BeforeAnythingElse
// Benchmark Process Environment Information:
// BenchmarkDotNet v0.13.11
// Runtime=.NET 8.0.0 (8.0.23.53103), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
// GC=Concurrent Workstation
// HardwareIntrinsics=AVX-512F+CD+BW+DQ+VL+VBMI,AES,BMI1,BMI2,FMA,LZCNT,PCLMUL,POPCNT VectorSize=256
// Job: DefaultJob
OverheadJitting 1: 1 op, 151100.00 ns, 151.1000 us/op
WorkloadJitting 1: 1 op, 179529700.00 ns, 179.5297 ms/op
WorkloadPilot 1: 2 op, 248820700.00 ns, 124.4103 ms/op
WorkloadPilot 2: 3 op, 363599000.00 ns, 121.1997 ms/op
WorkloadPilot 3: 4 op, 480252900.00 ns, 120.0632 ms/op
WorkloadPilot 4: 5 op, 608281600.00 ns, 121.6563 ms/op
WorkloadWarmup 1: 5 op, 624310900.00 ns, 124.8622 ms/op
WorkloadWarmup 2: 5 op, 652111900.00 ns, 130.4224 ms/op
WorkloadWarmup 3: 5 op, 598977100.00 ns, 119.7954 ms/op
WorkloadWarmup 4: 5 op, 646706400.00 ns, 129.3413 ms/op
WorkloadWarmup 5: 5 op, 622802800.00 ns, 124.5606 ms/op
WorkloadWarmup 6: 5 op, 620689300.00 ns, 124.1379 ms/op
// BeforeActualRun
WorkloadActual 1: 5 op, 670594100.00 ns, 134.1188 ms/op
WorkloadActual 2: 5 op, 621808700.00 ns, 124.3617 ms/op
WorkloadActual 3: 5 op, 626733600.00 ns, 125.3467 ms/op
WorkloadActual 4: 5 op, 620290600.00 ns, 124.0581 ms/op
WorkloadActual 5: 5 op, 614987900.00 ns, 122.9976 ms/op
WorkloadActual 6: 5 op, 618824200.00 ns, 123.7648 ms/op
WorkloadActual 7: 5 op, 622641600.00 ns, 124.5283 ms/op
WorkloadActual 8: 5 op, 621286300.00 ns, 124.2573 ms/op
WorkloadActual 9: 5 op, 627361100.00 ns, 125.4722 ms/op
WorkloadActual 10: 5 op, 642479500.00 ns, 128.4959 ms/op
WorkloadActual 11: 5 op, 642102600.00 ns, 128.4205 ms/op
WorkloadActual 12: 5 op, 651478400.00 ns, 130.2957 ms/op
WorkloadActual 13: 5 op, 620436300.00 ns, 124.0873 ms/op
WorkloadActual 14: 5 op, 650428400.00 ns, 130.0857 ms/op
WorkloadActual 15: 5 op, 668294400.00 ns, 133.6589 ms/op
WorkloadActual 16: 5 op, 696360700.00 ns, 139.2721 ms/op
WorkloadActual 17: 5 op, 630374600.00 ns, 126.0749 ms/op
WorkloadActual 18: 5 op, 624458100.00 ns, 124.8916 ms/op
WorkloadActual 19: 5 op, 663984300.00 ns, 132.7969 ms/op
WorkloadActual 20: 5 op, 631544600.00 ns, 126.3089 ms/op
WorkloadActual 21: 5 op, 641402600.00 ns, 128.2805 ms/op
WorkloadActual 22: 5 op, 651972700.00 ns, 130.3945 ms/op
WorkloadActual 23: 5 op, 634928200.00 ns, 126.9856 ms/op
WorkloadActual 24: 5 op, 638387300.00 ns, 127.6775 ms/op
WorkloadActual 25: 5 op, 618467300.00 ns, 123.6935 ms/op
WorkloadActual 26: 5 op, 654166400.00 ns, 130.8333 ms/op
// AfterActualRun
WorkloadResult 1: 5 op, 670594100.00 ns, 134.1188 ms/op
WorkloadResult 2: 5 op, 621808700.00 ns, 124.3617 ms/op
WorkloadResult 3: 5 op, 626733600.00 ns, 125.3467 ms/op
WorkloadResult 4: 5 op, 620290600.00 ns, 124.0581 ms/op
WorkloadResult 5: 5 op, 614987900.00 ns, 122.9976 ms/op
WorkloadResult 6: 5 op, 618824200.00 ns, 123.7648 ms/op
WorkloadResult 7: 5 op, 622641600.00 ns, 124.5283 ms/op
WorkloadResult 8: 5 op, 621286300.00 ns, 124.2573 ms/op
WorkloadResult 9: 5 op, 627361100.00 ns, 125.4722 ms/op
WorkloadResult 10: 5 op, 642479500.00 ns, 128.4959 ms/op
WorkloadResult 11: 5 op, 642102600.00 ns, 128.4205 ms/op
WorkloadResult 12: 5 op, 651478400.00 ns, 130.2957 ms/op
WorkloadResult 13: 5 op, 620436300.00 ns, 124.0873 ms/op
WorkloadResult 14: 5 op, 650428400.00 ns, 130.0857 ms/op
WorkloadResult 15: 5 op, 668294400.00 ns, 133.6589 ms/op
WorkloadResult 16: 5 op, 630374600.00 ns, 126.0749 ms/op
WorkloadResult 17: 5 op, 624458100.00 ns, 124.8916 ms/op
WorkloadResult 18: 5 op, 663984300.00 ns, 132.7969 ms/op
WorkloadResult 19: 5 op, 631544600.00 ns, 126.3089 ms/op
WorkloadResult 20: 5 op, 641402600.00 ns, 128.2805 ms/op
WorkloadResult 21: 5 op, 651972700.00 ns, 130.3945 ms/op
WorkloadResult 22: 5 op, 634928200.00 ns, 126.9856 ms/op
WorkloadResult 23: 5 op, 638387300.00 ns, 127.6775 ms/op
WorkloadResult 24: 5 op, 618467300.00 ns, 123.6935 ms/op
WorkloadResult 25: 5 op, 654166400.00 ns, 130.8333 ms/op
// GC: 46 0 0 389362600 5
// Threading: 0 0 5
// AfterAll
// Benchmark Process 47408 has exited with code 0.
Mean = 127.275 ms, StdErr = 0.665 ms (0.52%), N = 25, StdDev = 3.327 ms
Min = 122.998 ms, Q1 = 124.362 ms, Median = 126.309 ms, Q3 = 130.086 ms, Max = 134.119 ms
IQR = 5.724 ms, LowerFence = 115.776 ms, UpperFence = 138.672 ms
ConfidenceInterval = [124.783 ms; 129.768 ms] (CI 99.9%), Margin = 2.492 ms (1.96% of Mean)
Skewness = 0.59, Kurtosis = 2.06, MValue = 2
// ** Remained 1 (33.3%) benchmark(s) to run. Estimated finish 2023-12-22 18:56 (0h 0m from now) **
Setup power plan (GUID: 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c FriendlyName: 高パフォーマンス)
// **************************
// Benchmark: Runner.KVPSpanFormattable2: DefaultJob
// *** Execute ***
// Launch: 1 / 1
// Execute: dotnet c5644a83-9565-4dd2-bdab-772eba9d5b4d.dll --anonymousPipes 1392 1328 --benchmarkName Runner.KVPSpanFormattable2 --job Default --benchmarkId 2 in C:\Users\syasui\work\SandboxConsole\Benchmark\bin\Release\net8.0\c5644a83-9565-4dd2-bdab-772eba9d5b4d\bin\Release\net8.0
// BeforeAnythingElse
// Benchmark Process Environment Information:
// BenchmarkDotNet v0.13.11
// Runtime=.NET 8.0.0 (8.0.23.53103), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
// GC=Concurrent Workstation
// HardwareIntrinsics=AVX-512F+CD+BW+DQ+VL+VBMI,AES,BMI1,BMI2,FMA,LZCNT,PCLMUL,POPCNT VectorSize=256
// Job: DefaultJob
OverheadJitting 1: 1 op, 155900.00 ns, 155.9000 us/op
WorkloadJitting 1: 1 op, 187412500.00 ns, 187.4125 ms/op
WorkloadPilot 1: 2 op, 242827500.00 ns, 121.4137 ms/op
WorkloadPilot 2: 3 op, 359345400.00 ns, 119.7818 ms/op
WorkloadPilot 3: 4 op, 490746100.00 ns, 122.6865 ms/op
WorkloadPilot 4: 5 op, 608194300.00 ns, 121.6389 ms/op
WorkloadWarmup 1: 5 op, 693364200.00 ns, 138.6728 ms/op
WorkloadWarmup 2: 5 op, 625016800.00 ns, 125.0034 ms/op
WorkloadWarmup 3: 5 op, 642038000.00 ns, 128.4076 ms/op
WorkloadWarmup 4: 5 op, 619310700.00 ns, 123.8621 ms/op
WorkloadWarmup 5: 5 op, 620809100.00 ns, 124.1618 ms/op
WorkloadWarmup 6: 5 op, 612222400.00 ns, 122.4445 ms/op
// BeforeActualRun
WorkloadActual 1: 5 op, 606608900.00 ns, 121.3218 ms/op
WorkloadActual 2: 5 op, 620617100.00 ns, 124.1234 ms/op
WorkloadActual 3: 5 op, 610505700.00 ns, 122.1011 ms/op
WorkloadActual 4: 5 op, 627348400.00 ns, 125.4697 ms/op
WorkloadActual 5: 5 op, 632816600.00 ns, 126.5633 ms/op
WorkloadActual 6: 5 op, 636956500.00 ns, 127.3913 ms/op
WorkloadActual 7: 5 op, 652194100.00 ns, 130.4388 ms/op
WorkloadActual 8: 5 op, 635419700.00 ns, 127.0839 ms/op
WorkloadActual 9: 5 op, 659195900.00 ns, 131.8392 ms/op
WorkloadActual 10: 5 op, 662536300.00 ns, 132.5073 ms/op
WorkloadActual 11: 5 op, 658293200.00 ns, 131.6586 ms/op
WorkloadActual 12: 5 op, 652880300.00 ns, 130.5761 ms/op
WorkloadActual 13: 5 op, 671358800.00 ns, 134.2718 ms/op
WorkloadActual 14: 5 op, 657673900.00 ns, 131.5348 ms/op
WorkloadActual 15: 5 op, 660914600.00 ns, 132.1829 ms/op
WorkloadActual 16: 5 op, 637742500.00 ns, 127.5485 ms/op
WorkloadActual 17: 5 op, 633226800.00 ns, 126.6454 ms/op
WorkloadActual 18: 5 op, 636492000.00 ns, 127.2984 ms/op
WorkloadActual 19: 5 op, 637356800.00 ns, 127.4714 ms/op
WorkloadActual 20: 5 op, 635077600.00 ns, 127.0155 ms/op
WorkloadActual 21: 5 op, 643385000.00 ns, 128.6770 ms/op
WorkloadActual 22: 5 op, 662017900.00 ns, 132.4036 ms/op
WorkloadActual 23: 5 op, 643209900.00 ns, 128.6420 ms/op
WorkloadActual 24: 5 op, 640816600.00 ns, 128.1633 ms/op
// AfterActualRun
WorkloadResult 1: 5 op, 606608900.00 ns, 121.3218 ms/op
WorkloadResult 2: 5 op, 620617100.00 ns, 124.1234 ms/op
WorkloadResult 3: 5 op, 610505700.00 ns, 122.1011 ms/op
WorkloadResult 4: 5 op, 627348400.00 ns, 125.4697 ms/op
WorkloadResult 5: 5 op, 632816600.00 ns, 126.5633 ms/op
WorkloadResult 6: 5 op, 636956500.00 ns, 127.3913 ms/op
WorkloadResult 7: 5 op, 652194100.00 ns, 130.4388 ms/op
WorkloadResult 8: 5 op, 635419700.00 ns, 127.0839 ms/op
WorkloadResult 9: 5 op, 659195900.00 ns, 131.8392 ms/op
WorkloadResult 10: 5 op, 662536300.00 ns, 132.5073 ms/op
WorkloadResult 11: 5 op, 658293200.00 ns, 131.6586 ms/op
WorkloadResult 12: 5 op, 652880300.00 ns, 130.5761 ms/op
WorkloadResult 13: 5 op, 671358800.00 ns, 134.2718 ms/op
WorkloadResult 14: 5 op, 657673900.00 ns, 131.5348 ms/op
WorkloadResult 15: 5 op, 660914600.00 ns, 132.1829 ms/op
WorkloadResult 16: 5 op, 637742500.00 ns, 127.5485 ms/op
WorkloadResult 17: 5 op, 633226800.00 ns, 126.6454 ms/op
WorkloadResult 18: 5 op, 636492000.00 ns, 127.2984 ms/op
WorkloadResult 19: 5 op, 637356800.00 ns, 127.4714 ms/op
WorkloadResult 20: 5 op, 635077600.00 ns, 127.0155 ms/op
WorkloadResult 21: 5 op, 643385000.00 ns, 128.6770 ms/op
WorkloadResult 22: 5 op, 662017900.00 ns, 132.4036 ms/op
WorkloadResult 23: 5 op, 643209900.00 ns, 128.6420 ms/op
WorkloadResult 24: 5 op, 640816600.00 ns, 128.1633 ms/op
// GC: 46 0 0 389333480 5
// Threading: 0 0 5
// AfterAll
// Benchmark Process 50068 has exited with code 0.
Mean = 128.455 ms, StdErr = 0.678 ms (0.53%), N = 24, StdDev = 3.320 ms
Min = 121.322 ms, Q1 = 126.923 ms, Median = 127.856 ms, Q3 = 131.566 ms, Max = 134.272 ms
IQR = 4.643 ms, LowerFence = 119.959 ms, UpperFence = 138.530 ms
ConfidenceInterval = [125.902 ms; 131.009 ms] (CI 99.9%), Margin = 2.553 ms (1.99% of Mean)
Skewness = -0.29, Kurtosis = 2.37, MValue = 2
// ** Remained 0 (0.0%) benchmark(s) to run. Estimated finish 2023-12-22 18:56 (0h 0m from now) **
Successfully reverted power plan (GUID: 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c FriendlyName: 高パフォーマンス)
// ***** BenchmarkRunner: Finish *****
// * Export *
BenchmarkDotNet.Artifacts\results\Runner-report.csv
BenchmarkDotNet.Artifacts\results\Runner-report-github.md
BenchmarkDotNet.Artifacts\results\Runner-report.html
// * Detailed results *
Runner.KVPString: DefaultJob
Runtime = .NET 8.0.0 (8.0.23.53103), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI; GC = Concurrent Workstation
Mean = 184.448 ms, StdErr = 1.002 ms (0.54%), N = 35, StdDev = 5.927 ms
Min = 172.015 ms, Q1 = 179.997 ms, Median = 183.231 ms, Q3 = 189.070 ms, Max = 196.661 ms
IQR = 9.073 ms, LowerFence = 166.388 ms, UpperFence = 202.679 ms
ConfidenceInterval = [180.840 ms; 188.055 ms] (CI 99.9%), Margin = 3.607 ms (1.96% of Mean)
Skewness = 0.17, Kurtosis = 2.17, MValue = 3.14
-------------------- Histogram --------------------
[171.946 ms ; 176.703 ms) | @@@
[176.703 ms ; 182.743 ms) | @@@@@@@@@@@@@@
[182.743 ms ; 186.663 ms) | @@@
[186.663 ms ; 191.419 ms) | @@@@@@@@@@@
[191.419 ms ; 198.033 ms) | @@@@
---------------------------------------------------
Runner.KVPSpanFormattable: DefaultJob
Runtime = .NET 8.0.0 (8.0.23.53103), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI; GC = Concurrent Workstation
Mean = 127.275 ms, StdErr = 0.665 ms (0.52%), N = 25, StdDev = 3.327 ms
Min = 122.998 ms, Q1 = 124.362 ms, Median = 126.309 ms, Q3 = 130.086 ms, Max = 134.119 ms
IQR = 5.724 ms, LowerFence = 115.776 ms, UpperFence = 138.672 ms
ConfidenceInterval = [124.783 ms; 129.768 ms] (CI 99.9%), Margin = 2.492 ms (1.96% of Mean)
Skewness = 0.59, Kurtosis = 2.06, MValue = 2
-------------------- Histogram --------------------
[121.504 ms ; 126.495 ms) | @@@@@@@@@@@@@
[126.495 ms ; 131.050 ms) | @@@@@@@@@
[131.050 ms ; 134.951 ms) | @@@
---------------------------------------------------
Runner.KVPSpanFormattable2: DefaultJob
Runtime = .NET 8.0.0 (8.0.23.53103), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI; GC = Concurrent Workstation
Mean = 128.455 ms, StdErr = 0.678 ms (0.53%), N = 24, StdDev = 3.320 ms
Min = 121.322 ms, Q1 = 126.923 ms, Median = 127.856 ms, Q3 = 131.566 ms, Max = 134.272 ms
IQR = 4.643 ms, LowerFence = 119.959 ms, UpperFence = 138.530 ms
ConfidenceInterval = [125.902 ms; 131.009 ms] (CI 99.9%), Margin = 2.553 ms (1.99% of Mean)
Skewness = -0.29, Kurtosis = 2.37, MValue = 2
-------------------- Histogram --------------------
[121.212 ms ; 124.233 ms) | @@@
[124.233 ms ; 129.131 ms) | @@@@@@@@@@@@
[129.131 ms ; 132.984 ms) | @@@@@@@@
[132.984 ms ; 135.782 ms) | @
---------------------------------------------------
// * Summary *
BenchmarkDotNet v0.13.11, Windows 11 (10.0.22621.2861/22H2/2022Update/SunValley2)
11th Gen Intel Core i7-11700 2.50GHz, 1 CPU, 16 logical and 8 physical cores
.NET SDK 8.0.100
[Host] : .NET 8.0.0 (8.0.23.53103), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
DefaultJob : .NET 8.0.0 (8.0.23.53103), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
| Method | Mean | Error | StdDev | Gen0 | Allocated |
|-------------------- |---------:|--------:|--------:|-----------:|----------:|
| KVPString | 184.4 ms | 3.61 ms | 5.93 ms | 17333.3333 | 140.89 MB |
| KVPSpanFormattable | 127.3 ms | 2.49 ms | 3.33 ms | 9200.0000 | 74.27 MB |
| KVPSpanFormattable2 | 128.5 ms | 2.55 ms | 3.32 ms | 9200.0000 | 74.26 MB |
// * Warnings *
MultimodalDistribution
Runner.KVPString: Default -> It seems that the distribution can have several modes (mValue = 3.14)
// * Hints *
Outliers
Runner.KVPSpanFormattable: Default -> 1 outlier was removed (139.27 ms)
// * Legends *
Mean : Arithmetic mean of all measurements
Error : Half of 99.9% confidence interval
StdDev : Standard deviation of all measurements
Gen0 : GC Generation 0 collects per 1000 operations
Allocated : Allocated memory per single operation (managed only, inclusive, 1KB = 1024B)
1 ms : 1 Millisecond (0.001 sec)
// * Diagnostic Output - MemoryDiagnoser *
// ***** BenchmarkRunner: End *****
Run time: 00:01:09 (69.58 sec), executed benchmarks: 3
Global total time: 00:01:29 (89.52 sec), executed benchmarks: 3
// * Artifacts cleanup *
Artifacts cleanup is finished
C:\Users\syasui\work\SandboxConsole\Benchmark\bin\Release\net8.0\Benchmark.exe (process 48012) exited with code 0.
Press any key to close this window . . .
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment