-
Notifications
You must be signed in to change notification settings - Fork 0
Benchmarks
Christopher Wolf edited this page Feb 22, 2026
·
1 revision
In general, efforts were made to ensure performance during the development of the library, but functionality is the primary focus.
However, to provide some insights, below are some benchmark results for the implementation, including details of the hardware used to run the benchmarks.
The benchmarks can also be found in the repository in the benchmarks directory and were implemented using BenchmarkDotNet.
BenchmarkDotNet v0.15.8, Windows 11 (10.0.26200.7840/25H2/2025Update/HudsonValley2)
AMD Ryzen 9 7950X3D 4.20GHz, 1 CPU, 32 logical and 16 physical cores
.NET 10 : .NET 10.0.3 (10.0.3, 10.0.326.7603), X64 RyuJIT x86-64-v4
.NET 9 : .NET 9.0.13 (9.0.13, 9.0.1326.6317), X64 RyuJIT x86-64-v4
.NET 8 : .NET 8.0.24 (8.0.24, 8.0.2426.7010), X64 RyuJIT x86-64-v4
Legends
Mean : Arithmetic mean of all measurements
Error : Half of 99.9% confidence interval
StdDev : Standard deviation of all measurements
P95 : Percentile 95
Ratio : Mean of the ratio distribution ([Current]/[Baseline])
RatioSD : Standard deviation of the ratio distribution ([Current]/[Baseline])
Rank : Relative position of current benchmark mean among all benchmarks (Arabic style)
Gen0 : GC Generation 0 collects per 1000 operations
Allocated : Allocated memory per single operation (managed only, inclusive, 1KB = 1024B)
1 ns : 1 Nanosecond (0.000000001 sec)
| Method | Runtime | Mean | Error | StdDev | Median | P95 | Ratio | RatioSD | Rank | Gen0 | Allocated |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 'Standard: HH:mm:ss' | .NET 10.0 | 342.8 ns | 6.79 ns | 14.47 ns | 344.1 ns | 361.3 ns | 0.28 | 0.01 | 1 | 0.0329 | 1656 B |
| 'Standard: d.HH:mm:ss.fff' | .NET 10.0 | 351.6 ns | 5.05 ns | 3.94 ns | 352.3 ns | 355.7 ns | 0.29 | 0.01 | 1 | 0.0334 | 1688 B |
| 'Human: single unit (5m)' | .NET 10.0 | 435.1 ns | 8.65 ns | 12.40 ns | 433.8 ns | 455.6 ns | 0.36 | 0.01 | 2 | 0.0334 | 1688 B |
| 'Human: two units (1h 30m)' | .NET 10.0 | 481.4 ns | 9.60 ns | 9.86 ns | 480.7 ns | 496.4 ns | 0.40 | 0.01 | 3 | 0.0339 | 1720 B |
| 'Human: full combo' * | .NET 10.0 | 755.4 ns | 15.12 ns | 15.53 ns | 752.3 ns | 780.4 ns | 0.62 | 0.02 | 5 | 0.0372 | 1880 B |
| 'Human: decimals (1.5h 100ms)' | .NET 10.0 | 631.0 ns | 12.25 ns | 14.11 ns | 631.3 ns | 651.2 ns | 0.52 | 0.01 | 4 | 0.0353 | 1816 B |
| 'Invalid input' | .NET 10.0 | 1,217.5 ns | 21.04 ns | 18.65 ns | 1,221.6 ns | 1,239.7 ns | 1.00 | 0.02 | 6 | 0.0057 | 376 B |
| 'Null input' | .NET 10.0 | 1,215.7 ns | 31.72 ns | 93.54 ns | 1,242.1 ns | 1,320.9 ns | 1.00 | 0.08 | 6 | 0.0057 | 328 B |
| 'Standard: HH:mm:ss' | .NET 9.0 | 327.7 ns | 3.95 ns | 3.50 ns | 327.2 ns | 333.2 ns | 0.21 | 0.00 | 1 | 0.0329 | 1656 B |
| 'Standard: d.HH:mm:ss.fff' | .NET 9.0 | 353.5 ns | 2.48 ns | 2.20 ns | 353.7 ns | 356.6 ns | 0.23 | 0.00 | 2 | 0.0334 | 1688 B |
| 'Human: single unit (5m)' | .NET 9.0 | 485.4 ns | 3.31 ns | 3.09 ns | 486.3 ns | 488.5 ns | 0.31 | 0.00 | 3 | 0.0334 | 1688 B |
| 'Human: two units (1h 30m)' | .NET 9.0 | 517.2 ns | 3.41 ns | 2.84 ns | 516.2 ns | 521.9 ns | 0.33 | 0.00 | 4 | 0.0339 | 1720 B |
| 'Human: full combo' * | .NET 9.0 | 854.6 ns | 10.82 ns | 10.12 ns | 850.6 ns | 869.1 ns | 0.55 | 0.01 | 6 | 0.0372 | 1880 B |
| 'Human: decimals (1.5h 100ms)' | .NET 9.0 | 731.7 ns | 9.88 ns | 8.75 ns | 731.8 ns | 744.8 ns | 0.47 | 0.01 | 5 | 0.0353 | 1816 B |
| 'Invalid input' | .NET 9.0 | 1,553.3 ns | 18.43 ns | 17.24 ns | 1,557.8 ns | 1,576.1 ns | 1.00 | 0.02 | 7 | 0.0057 | 376 B |
| 'Null input' | .NET 9.0 | 1,694.4 ns | 20.26 ns | 18.95 ns | 1,688.6 ns | 1,723.9 ns | 1.09 | 0.02 | 8 | 0.0057 | 328 B |
| 'Standard: HH:mm:ss' | .NET 8.0 | 354.9 ns | 3.97 ns | 3.52 ns | 354.8 ns | 359.9 ns | 0.11 | 0.00 | 1 | 0.0329 | 1656 B |
| 'Standard: d.HH:mm:ss.fff' | .NET 8.0 | 362.9 ns | 6.17 ns | 5.47 ns | 363.1 ns | 371.1 ns | 0.12 | 0.00 | 1 | 0.0334 | 1688 B |
| 'Human: single unit (5m)' | .NET 8.0 | 471.6 ns | 4.71 ns | 4.17 ns | 471.8 ns | 478.1 ns | 0.15 | 0.00 | 2 | 0.0334 | 1688 B |
| 'Human: two units (1h 30m)' | .NET 8.0 | 525.6 ns | 7.45 ns | 6.97 ns | 527.4 ns | 535.3 ns | 0.17 | 0.00 | 3 | 0.0339 | 1720 B |
| 'Human: full combo' * | .NET 8.0 | 843.8 ns | 10.36 ns | 9.70 ns | 843.0 ns | 856.3 ns | 0.27 | 0.01 | 5 | 0.0372 | 1880 B |
| 'Human: decimals (1.5h 100ms)' | .NET 8.0 | 713.0 ns | 9.79 ns | 8.67 ns | 710.4 ns | 727.4 ns | 0.23 | 0.00 | 4 | 0.0353 | 1816 B |
| 'Invalid input' | .NET 8.0 | 3,137.1 ns | 60.14 ns | 59.07 ns | 3,140.0 ns | 3,231.1 ns | 1.00 | 0.03 | 6 | 0.0076 | 384 B |
| 'Null input' | .NET 8.0 | 3,616.1 ns | 48.37 ns | 45.24 ns | 3,611.1 ns | 3,678.5 ns | 1.15 | 0.03 | 7 | 0.0038 | 352 B |
* full combo = "2 days 4 hours 15 minutes 30 seconds 500 milliseconds"
| Method | Runtime | Mean | Error | StdDev | P95 | Ratio | RatioSD | Rank | Gen0 | Allocated |
|---|---|---|---|---|---|---|---|---|---|---|
| 'Standard: HH:mm:ss' | .NET 10.0 | 287.9391 ns | 3.2049 ns | 2.9979 ns | 291.5550 ns | 6.76 | 0.13 | 3 | 0.0329 | 1656 B |
| 'Standard: d.HH:mm:ss.fff' | .NET 10.0 | 330.6657 ns | 2.5955 ns | 2.3008 ns | 333.3371 ns | 7.77 | 0.14 | 4 | 0.0334 | 1688 B |
| 'Human: single unit (5m)' | .NET 10.0 | 461.4248 ns | 9.0115 ns | 14.5519 ns | 485.6619 ns | 10.84 | 0.38 | 5 | 0.0334 | 1688 B |
| 'Human: two units (1h 30m)' | .NET 10.0 | 470.6134 ns | 7.8707 ns | 7.3623 ns | 482.4788 ns | 11.05 | 0.25 | 5 | 0.0339 | 1720 B |
| 'Human: full combo' * | .NET 10.0 | 719.9095 ns | 12.2665 ns | 10.8740 ns | 736.3521 ns | 16.91 | 0.38 | 7 | 0.0372 | 1880 B |
| 'Human: decimals (1.5h 100ms)' | .NET 10.0 | 604.6110 ns | 10.0666 ns | 9.8867 ns | 620.0943 ns | 14.20 | 0.33 | 6 | 0.0353 | 1816 B |
| 'Invalid input' | .NET 10.0 | 42.5874 ns | 0.8135 ns | 0.7609 ns | 43.9415 ns | 1.00 | 0.02 | 2 | - | - |
| 'Null input' | .NET 10.0 | 1.0329 ns | 0.0374 ns | 0.0350 ns | 1.0840 ns | 0.02 | 0.00 | 1 | - | - |
| 'Standard: HH:mm:ss' | .NET 9.0 | 350.6555 ns | 7.0180 ns | 6.5646 ns | 360.4509 ns | 5.45 | 0.13 | 3 | 0.0329 | 1656 B |
| 'Standard: d.HH:mm:ss.fff' | .NET 9.0 | 371.5370 ns | 7.3431 ns | 7.5408 ns | 382.4946 ns | 5.78 | 0.14 | 4 | 0.0334 | 1688 B |
| 'Human: single unit (5m)' | .NET 9.0 | 494.1462 ns | 9.9082 ns | 14.8301 ns | 508.7619 ns | 7.69 | 0.25 | 5 | 0.0334 | 1688 B |
| 'Human: two units (1h 30m)' | .NET 9.0 | 529.3066 ns | 10.3670 ns | 11.5229 ns | 551.3136 ns | 8.23 | 0.21 | 6 | 0.0334 | 1720 B |
| 'Human: full combo' * | .NET 9.0 | 864.3188 ns | 12.6515 ns | 10.5646 ns | 882.7407 ns | 13.44 | 0.25 | 8 | 0.0372 | 1880 B |
| 'Human: decimals (1.5h 100ms)' | .NET 9.0 | 782.2428 ns | 13.3596 ns | 15.9036 ns | 802.7779 ns | 12.17 | 0.30 | 7 | 0.0353 | 1816 B |
| 'Invalid input' | .NET 9.0 | 64.3077 ns | 1.0813 ns | 0.9585 ns | 65.5844 ns | 1.00 | 0.02 | 2 | - | - |
| 'Null input' | .NET 9.0 | 0.8494 ns | 0.0154 ns | 0.0136 ns | 0.8747 ns | 0.01 | 0.00 | 1 | - | - |
| 'Standard: HH:mm:ss' | .NET 8.0 | 350.2927 ns | 6.8227 ns | 8.6286 ns | 362.9657 ns | 5.44 | 0.16 | 3 | 0.0329 | 1656 B |
| 'Standard: d.HH:mm:ss.fff' | .NET 8.0 | 369.6096 ns | 6.9320 ns | 6.4842 ns | 378.1941 ns | 5.74 | 0.14 | 3 | 0.0334 | 1688 B |
| 'Human: single unit (5m)' | .NET 8.0 | 489.8678 ns | 8.3834 ns | 7.4317 ns | 500.9208 ns | 7.60 | 0.17 | 4 | 0.0334 | 1688 B |
| 'Human: two units (1h 30m)' | .NET 8.0 | 532.1089 ns | 10.2960 ns | 12.2566 ns | 545.7322 ns | 8.26 | 0.23 | 5 | 0.0339 | 1720 B |
| 'Human: full combo' * | .NET 8.0 | 862.1143 ns | 15.3813 ns | 13.6351 ns | 882.2121 ns | 13.38 | 0.30 | 7 | 0.0372 | 1880 B |
| 'Human: decimals (1.5h 100ms)' | .NET 8.0 | 770.7357 ns | 14.7227 ns | 19.1437 ns | 798.2340 ns | 11.96 | 0.35 | 6 | 0.0353 | 1816 B |
| 'Invalid input' | .NET 8.0 | 64.4426 ns | 1.1786 ns | 1.1024 ns | 65.7730 ns | 1.00 | 0.02 | 2 | - | - |
| 'Null input' | .NET 8.0 | 0.9767 ns | 0.0224 ns | 0.0210 ns | 1.0088 ns | 0.02 | 0.00 | 1 | - | - |
* full combo = "2 days 4 hours 15 minutes 30 seconds 500 milliseconds"