diff --git a/docs/docs/benchmarks/mocks/Callback.md b/docs/docs/benchmarks/mocks/Callback.md index b872017887..e515b2a3e0 100644 --- a/docs/docs/benchmarks/mocks/Callback.md +++ b/docs/docs/benchmarks/mocks/Callback.md @@ -9,7 +9,7 @@ sidebar_position: 2 > Callback registration and execution — comparing **TUnit.Mocks** (source-generated) against runtime proxy-based mocking libraries. :::info Last Updated -This benchmark was automatically generated on **2026-07-17** from the latest CI run. +This benchmark was automatically generated on **2026-07-18** from the latest CI run. **Environment:** Ubuntu Latest • .NET SDK 10.0.302 ::: @@ -20,12 +20,12 @@ Callback registration and execution: | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **TUnit.Mocks** | 705.9 ns | 12.13 ns | 11.35 ns | 3.11 KB | -| Imposter | 495.0 ns | 8.32 ns | 7.79 ns | 2.66 KB | -| Mockolate | 374.5 ns | 5.34 ns | 5.00 ns | 1.8 KB | -| Moq | 187,749.2 ns | 636.52 ns | 595.40 ns | 13.14 KB | -| NSubstitute | 4,849.4 ns | 26.18 ns | 24.49 ns | 7.85 KB | -| FakeItEasy | 5,577.3 ns | 19.67 ns | 17.44 ns | 7.44 KB | +| **TUnit.Mocks** | 655.2 ns | 6.41 ns | 5.99 ns | 3.11 KB | +| Imposter | 471.4 ns | 5.40 ns | 5.05 ns | 2.66 KB | +| Mockolate | 347.4 ns | 2.36 ns | 2.21 ns | 1.8 KB | +| Moq | 133,770.5 ns | 1,422.05 ns | 1,260.61 ns | 13.14 KB | +| NSubstitute | 4,456.9 ns | 84.09 ns | 78.66 ns | 7.85 KB | +| FakeItEasy | 4,787.2 ns | 65.19 ns | 60.97 ns | 7.44 KB | ```mermaid %%{init: { @@ -51,8 +51,8 @@ Callback registration and execution: xychart-beta title "Callback Performance Comparison" x-axis ["TUnit.Mocks", "Imposter", "Mockolate", "Moq", "NSubstitute", "FakeItEasy"] - y-axis "Time (ns)" 0 --> 225300 - bar [705.9, 495, 374.5, 187749.2, 4849.4, 5577.3] + y-axis "Time (ns)" 0 --> 160525 + bar [655.2, 471.4, 347.4, 133770.5, 4456.9, 4787.2] ``` --- @@ -61,12 +61,12 @@ xychart-beta | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **TUnit.Mocks** | 846.5 ns | 9.86 ns | 9.22 ns | 3.2 KB | -| Imposter | 580.3 ns | 5.58 ns | 4.95 ns | 2.82 KB | -| Mockolate | 430.3 ns | 6.02 ns | 5.63 ns | 1.84 KB | -| Moq | 196,757.9 ns | 723.51 ns | 676.77 ns | 13.73 KB | -| NSubstitute | 5,578.5 ns | 28.29 ns | 26.46 ns | 8.41 KB | -| FakeItEasy | 6,904.4 ns | 129.86 ns | 121.47 ns | 9.4 KB | +| **TUnit.Mocks** | 771.7 ns | 3.27 ns | 2.90 ns | 3.2 KB | +| Imposter | 573.9 ns | 4.82 ns | 4.28 ns | 2.82 KB | +| Mockolate | 387.3 ns | 2.37 ns | 2.10 ns | 1.84 KB | +| Moq | 144,225.1 ns | 1,534.94 ns | 1,281.75 ns | 13.73 KB | +| NSubstitute | 4,914.5 ns | 51.14 ns | 42.70 ns | 8.41 KB | +| FakeItEasy | 5,963.3 ns | 43.31 ns | 38.40 ns | 9.4 KB | ```mermaid %%{init: { @@ -92,8 +92,8 @@ xychart-beta xychart-beta title "Callback (with args) Performance Comparison" x-axis ["TUnit.Mocks", "Imposter", "Mockolate", "Moq", "NSubstitute", "FakeItEasy"] - y-axis "Time (ns)" 0 --> 236110 - bar [846.5, 580.3, 430.3, 196757.9, 5578.5, 6904.4] + y-axis "Time (ns)" 0 --> 173071 + bar [771.7, 573.9, 387.3, 144225.1, 4914.5, 5963.3] ``` ## 🎯 Key Insights @@ -106,4 +106,4 @@ This benchmark compares **TUnit.Mocks** (source-generated) against runtime proxy View the [mock benchmarks overview](/docs/benchmarks/mocks) for methodology details and environment information. ::: -*Last generated: 2026-07-17T03:20:48.806Z* +*Last generated: 2026-07-18T03:20:37.479Z* diff --git a/docs/docs/benchmarks/mocks/CombinedWorkflow.md b/docs/docs/benchmarks/mocks/CombinedWorkflow.md index 9e4b4b411b..2c81df72a6 100644 --- a/docs/docs/benchmarks/mocks/CombinedWorkflow.md +++ b/docs/docs/benchmarks/mocks/CombinedWorkflow.md @@ -9,7 +9,7 @@ sidebar_position: 3 > Full workflow: create → setup → invoke → verify — comparing **TUnit.Mocks** (source-generated) against runtime proxy-based mocking libraries. :::info Last Updated -This benchmark was automatically generated on **2026-07-17** from the latest CI run. +This benchmark was automatically generated on **2026-07-18** from the latest CI run. **Environment:** Ubuntu Latest • .NET SDK 10.0.302 ::: @@ -20,12 +20,12 @@ Full workflow: create → setup → invoke → verify: | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **TUnit.Mocks** | 2.119 μs | 0.0188 μs | 0.0167 μs | 6.23 KB | -| Imposter | 3.022 μs | 0.0375 μs | 0.0332 μs | 15.71 KB | -| Mockolate | 1.865 μs | 0.0201 μs | 0.0188 μs | 7.36 KB | -| Moq | 411.688 μs | 2.8362 μs | 2.6530 μs | 36.16 KB | -| NSubstitute | 18.220 μs | 0.1458 μs | 0.1293 μs | 26.72 KB | -| FakeItEasy | 19.560 μs | 0.2402 μs | 0.2247 μs | 25.52 KB | +| **TUnit.Mocks** | 1.974 μs | 0.0329 μs | 0.0308 μs | 6.23 KB | +| Imposter | 2.916 μs | 0.0375 μs | 0.0332 μs | 15.71 KB | +| Mockolate | 1.841 μs | 0.0257 μs | 0.0241 μs | 7.36 KB | +| Moq | 415.950 μs | 1.7887 μs | 1.5857 μs | 36.16 KB | +| NSubstitute | 17.697 μs | 0.2103 μs | 0.1967 μs | 26.72 KB | +| FakeItEasy | 19.178 μs | 0.1046 μs | 0.0927 μs | 25.52 KB | ```mermaid %%{init: { @@ -51,8 +51,8 @@ Full workflow: create → setup → invoke → verify: xychart-beta title "CombinedWorkflow Performance Comparison" x-axis ["TUnit.Mocks", "Imposter", "Mockolate", "Moq", "NSubstitute", "FakeItEasy"] - y-axis "Time (μs)" 0 --> 495 - bar [2.119, 3.022, 1.865, 411.688, 18.22, 19.56] + y-axis "Time (μs)" 0 --> 500 + bar [1.974, 2.916, 1.841, 415.95, 17.697, 19.178] ``` ## 🎯 Key Insights @@ -65,4 +65,4 @@ This benchmark compares **TUnit.Mocks** (source-generated) against runtime proxy View the [mock benchmarks overview](/docs/benchmarks/mocks) for methodology details and environment information. ::: -*Last generated: 2026-07-17T03:20:48.806Z* +*Last generated: 2026-07-18T03:20:37.479Z* diff --git a/docs/docs/benchmarks/mocks/Invocation.md b/docs/docs/benchmarks/mocks/Invocation.md index 18971bb7af..9bfa92823e 100644 --- a/docs/docs/benchmarks/mocks/Invocation.md +++ b/docs/docs/benchmarks/mocks/Invocation.md @@ -9,7 +9,7 @@ sidebar_position: 4 > Calling methods on mock objects — comparing **TUnit.Mocks** (source-generated) against runtime proxy-based mocking libraries. :::info Last Updated -This benchmark was automatically generated on **2026-07-17** from the latest CI run. +This benchmark was automatically generated on **2026-07-18** from the latest CI run. **Environment:** Ubuntu Latest • .NET SDK 10.0.302 ::: @@ -20,12 +20,12 @@ Calling methods on mock objects: | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **TUnit.Mocks** | 273.21 ns | 54.95 ns | 3.012 ns | 128 B | -| Imposter | 295.60 ns | 64.58 ns | 3.540 ns | 168 B | -| Mockolate | 116.27 ns | 54.60 ns | 2.993 ns | 84 B | -| Moq | 826.32 ns | 428.39 ns | 23.482 ns | 376 B | -| NSubstitute | 711.93 ns | 117.66 ns | 6.449 ns | 304 B | -| FakeItEasy | 1,688.72 ns | 615.50 ns | 33.738 ns | 944 B | +| **TUnit.Mocks** | 268.82 ns | 94.050 ns | 5.155 ns | 128 B | +| Imposter | 289.23 ns | 72.458 ns | 3.972 ns | 168 B | +| Mockolate | 97.23 ns | 8.163 ns | 0.447 ns | 84 B | +| Moq | 779.18 ns | 102.106 ns | 5.597 ns | 376 B | +| NSubstitute | 687.43 ns | 84.433 ns | 4.628 ns | 304 B | +| FakeItEasy | 1,646.50 ns | 171.102 ns | 9.379 ns | 944 B | ```mermaid %%{init: { @@ -51,8 +51,8 @@ Calling methods on mock objects: xychart-beta title "Invocation Performance Comparison" x-axis ["TUnit.Mocks", "Imposter", "Mockolate", "Moq", "NSubstitute", "FakeItEasy"] - y-axis "Time (ns)" 0 --> 2027 - bar [273.21, 295.6, 116.27, 826.32, 711.93, 1688.72] + y-axis "Time (ns)" 0 --> 1976 + bar [268.82, 289.23, 97.23, 779.18, 687.43, 1646.5] ``` --- @@ -61,12 +61,12 @@ xychart-beta | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **TUnit.Mocks** | 167.79 ns | 78.26 ns | 4.290 ns | 96 B | -| Imposter | 296.53 ns | 25.92 ns | 1.421 ns | 168 B | -| Mockolate | 93.26 ns | 21.15 ns | 1.159 ns | 60 B | -| Moq | 549.13 ns | 106.61 ns | 5.843 ns | 296 B | -| NSubstitute | 636.74 ns | 195.01 ns | 10.689 ns | 272 B | -| FakeItEasy | 1,580.87 ns | 263.68 ns | 14.453 ns | 776 B | +| **TUnit.Mocks** | 164.49 ns | 77.738 ns | 4.261 ns | 96 B | +| Imposter | 289.85 ns | 91.629 ns | 5.023 ns | 168 B | +| Mockolate | 91.17 ns | 3.098 ns | 0.170 ns | 60 B | +| Moq | 512.51 ns | 50.686 ns | 2.778 ns | 296 B | +| NSubstitute | 588.63 ns | 217.284 ns | 11.910 ns | 272 B | +| FakeItEasy | 1,481.92 ns | 165.295 ns | 9.060 ns | 776 B | ```mermaid %%{init: { @@ -92,8 +92,8 @@ xychart-beta xychart-beta title "Invocation (String) Performance Comparison" x-axis ["TUnit.Mocks", "Imposter", "Mockolate", "Moq", "NSubstitute", "FakeItEasy"] - y-axis "Time (ns)" 0 --> 1898 - bar [167.79, 296.53, 93.26, 549.13, 636.74, 1580.87] + y-axis "Time (ns)" 0 --> 1779 + bar [164.49, 289.85, 91.17, 512.51, 588.63, 1481.92] ``` --- @@ -102,12 +102,12 @@ xychart-beta | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **TUnit.Mocks** | 27,119.94 ns | 11,658.13 ns | 639.021 ns | 12736 B | -| Imposter | 28,877.92 ns | 6,810.75 ns | 373.320 ns | 16800 B | -| Mockolate | 10,425.92 ns | 3,862.76 ns | 211.731 ns | 8400 B | -| Moq | 80,932.02 ns | 4,243.47 ns | 232.599 ns | 37600 B | -| NSubstitute | 70,858.46 ns | 4,713.41 ns | 258.358 ns | 30848 B | -| FakeItEasy | 178,405.95 ns | 6,746.21 ns | 369.782 ns | 94400 B | +| **TUnit.Mocks** | 26,660.50 ns | 12,290.566 ns | 673.687 ns | 12736 B | +| Imposter | 28,408.06 ns | 6,953.330 ns | 381.136 ns | 16800 B | +| Mockolate | 9,741.00 ns | 2,523.004 ns | 138.294 ns | 8400 B | +| Moq | 79,583.09 ns | 24,667.273 ns | 1,352.096 ns | 37600 B | +| NSubstitute | 67,980.85 ns | 21,638.056 ns | 1,186.055 ns | 30848 B | +| FakeItEasy | 166,533.82 ns | 67,417.348 ns | 3,695.372 ns | 94400 B | ```mermaid %%{init: { @@ -133,8 +133,8 @@ xychart-beta xychart-beta title "Invocation (100 calls) Performance Comparison" x-axis ["TUnit.Mocks", "Imposter", "Mockolate", "Moq", "NSubstitute", "FakeItEasy"] - y-axis "Time (ns)" 0 --> 214088 - bar [27119.94, 28877.92, 10425.92, 80932.02, 70858.46, 178405.95] + y-axis "Time (ns)" 0 --> 199841 + bar [26660.5, 28408.06, 9741, 79583.09, 67980.85, 166533.82] ``` ## 🎯 Key Insights @@ -147,4 +147,4 @@ This benchmark compares **TUnit.Mocks** (source-generated) against runtime proxy View the [mock benchmarks overview](/docs/benchmarks/mocks) for methodology details and environment information. ::: -*Last generated: 2026-07-17T03:20:48.806Z* +*Last generated: 2026-07-18T03:20:37.479Z* diff --git a/docs/docs/benchmarks/mocks/MockCreation.md b/docs/docs/benchmarks/mocks/MockCreation.md index 1380b81b16..4a41a349a9 100644 --- a/docs/docs/benchmarks/mocks/MockCreation.md +++ b/docs/docs/benchmarks/mocks/MockCreation.md @@ -9,7 +9,7 @@ sidebar_position: 5 > Mock instance creation performance — comparing **TUnit.Mocks** (source-generated) against runtime proxy-based mocking libraries. :::info Last Updated -This benchmark was automatically generated on **2026-07-17** from the latest CI run. +This benchmark was automatically generated on **2026-07-18** from the latest CI run. **Environment:** Ubuntu Latest • .NET SDK 10.0.302 ::: @@ -20,12 +20,12 @@ Mock instance creation performance: | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **TUnit.Mocks** | 31.99 ns | 0.682 ns | 0.700 ns | 200 B | -| Imposter | 102.07 ns | 0.742 ns | 0.694 ns | 440 B | -| Mockolate | 18.04 ns | 0.170 ns | 0.150 ns | 160 B | -| Moq | 1,303.32 ns | 25.278 ns | 25.959 ns | 2048 B | -| NSubstitute | 1,821.50 ns | 25.868 ns | 22.931 ns | 5000 B | -| FakeItEasy | 1,877.85 ns | 34.474 ns | 38.317 ns | 2715 B | +| **TUnit.Mocks** | 31.95 ns | 0.635 ns | 0.594 ns | 200 B | +| Imposter | 97.86 ns | 1.407 ns | 1.316 ns | 440 B | +| Mockolate | 18.20 ns | 0.389 ns | 0.364 ns | 160 B | +| Moq | 1,306.58 ns | 25.476 ns | 25.021 ns | 2048 B | +| NSubstitute | 1,816.36 ns | 13.766 ns | 12.203 ns | 5000 B | +| FakeItEasy | 1,681.08 ns | 18.761 ns | 17.549 ns | 2723 B | ```mermaid %%{init: { @@ -51,8 +51,8 @@ Mock instance creation performance: xychart-beta title "MockCreation Performance Comparison" x-axis ["TUnit.Mocks", "Imposter", "Mockolate", "Moq", "NSubstitute", "FakeItEasy"] - y-axis "Time (ns)" 0 --> 2254 - bar [31.99, 102.07, 18.04, 1303.32, 1821.5, 1877.85] + y-axis "Time (ns)" 0 --> 2180 + bar [31.95, 97.86, 18.2, 1306.58, 1816.36, 1681.08] ``` --- @@ -61,12 +61,12 @@ xychart-beta | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **TUnit.Mocks** | 30.44 ns | 0.304 ns | 0.269 ns | 200 B | -| Imposter | 160.49 ns | 1.458 ns | 1.293 ns | 696 B | -| Mockolate | 19.24 ns | 0.270 ns | 0.240 ns | 176 B | -| Moq | 1,239.96 ns | 14.447 ns | 13.514 ns | 1912 B | -| NSubstitute | 1,766.64 ns | 28.811 ns | 32.023 ns | 5000 B | -| FakeItEasy | 1,809.19 ns | 35.980 ns | 82.670 ns | 2715 B | +| **TUnit.Mocks** | 31.93 ns | 0.720 ns | 0.770 ns | 200 B | +| Imposter | 156.44 ns | 3.161 ns | 2.956 ns | 696 B | +| Mockolate | 19.20 ns | 0.466 ns | 0.852 ns | 176 B | +| Moq | 1,315.37 ns | 4.758 ns | 4.451 ns | 1912 B | +| NSubstitute | 1,804.07 ns | 15.707 ns | 14.692 ns | 5000 B | +| FakeItEasy | 1,689.29 ns | 18.356 ns | 17.170 ns | 2723 B | ```mermaid %%{init: { @@ -92,8 +92,8 @@ xychart-beta xychart-beta title "MockCreation (Repository) Performance Comparison" x-axis ["TUnit.Mocks", "Imposter", "Mockolate", "Moq", "NSubstitute", "FakeItEasy"] - y-axis "Time (ns)" 0 --> 2172 - bar [30.44, 160.49, 19.24, 1239.96, 1766.64, 1809.19] + y-axis "Time (ns)" 0 --> 2165 + bar [31.93, 156.44, 19.2, 1315.37, 1804.07, 1689.29] ``` ## 🎯 Key Insights @@ -106,4 +106,4 @@ This benchmark compares **TUnit.Mocks** (source-generated) against runtime proxy View the [mock benchmarks overview](/docs/benchmarks/mocks) for methodology details and environment information. ::: -*Last generated: 2026-07-17T03:20:48.806Z* +*Last generated: 2026-07-18T03:20:37.479Z* diff --git a/docs/docs/benchmarks/mocks/Setup.md b/docs/docs/benchmarks/mocks/Setup.md index ecab0bf047..5e2f784ad0 100644 --- a/docs/docs/benchmarks/mocks/Setup.md +++ b/docs/docs/benchmarks/mocks/Setup.md @@ -9,7 +9,7 @@ sidebar_position: 6 > Mock behavior configuration (returns, matchers) — comparing **TUnit.Mocks** (source-generated) against runtime proxy-based mocking libraries. :::info Last Updated -This benchmark was automatically generated on **2026-07-17** from the latest CI run. +This benchmark was automatically generated on **2026-07-18** from the latest CI run. **Environment:** Ubuntu Latest • .NET SDK 10.0.302 ::: @@ -20,12 +20,12 @@ Mock behavior configuration (returns, matchers): | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **TUnit.Mocks** | 567.8 ns | 4.26 ns | 3.78 ns | 2.34 KB | -| Imposter | 887.0 ns | 12.93 ns | 12.10 ns | 6.12 KB | -| Mockolate | 340.3 ns | 3.38 ns | 3.16 ns | 1.41 KB | -| Moq | 441,111.8 ns | 1,703.21 ns | 1,593.19 ns | 28.52 KB | -| NSubstitute | 5,866.6 ns | 52.26 ns | 48.88 ns | 9.06 KB | -| FakeItEasy | 8,591.2 ns | 57.71 ns | 51.16 ns | 10.45 KB | +| **TUnit.Mocks** | 511.6 ns | 6.39 ns | 5.33 ns | 2.34 KB | +| Imposter | 816.5 ns | 12.93 ns | 15.39 ns | 6.12 KB | +| Mockolate | 311.3 ns | 6.08 ns | 8.32 ns | 1.41 KB | +| Moq | 431,492.8 ns | 4,573.71 ns | 4,278.25 ns | 28.63 KB | +| NSubstitute | 5,484.0 ns | 49.98 ns | 46.75 ns | 9.01 KB | +| FakeItEasy | 8,085.3 ns | 105.45 ns | 98.64 ns | 10.45 KB | ```mermaid %%{init: { @@ -51,8 +51,8 @@ Mock behavior configuration (returns, matchers): xychart-beta title "Setup Performance Comparison" x-axis ["TUnit.Mocks", "Imposter", "Mockolate", "Moq", "NSubstitute", "FakeItEasy"] - y-axis "Time (ns)" 0 --> 529335 - bar [567.8, 887, 340.3, 441111.8, 5866.6, 8591.2] + y-axis "Time (ns)" 0 --> 517792 + bar [511.6, 816.5, 311.3, 431492.8, 5484, 8085.3] ``` --- @@ -61,12 +61,12 @@ xychart-beta | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **TUnit.Mocks** | 818.1 ns | 5.65 ns | 5.01 ns | 3.15 KB | -| Imposter | 1,489.2 ns | 17.66 ns | 16.52 ns | 10.59 KB | -| Mockolate | 595.3 ns | 4.99 ns | 4.67 ns | 2.35 KB | -| Moq | 117,081.2 ns | 574.26 ns | 509.07 ns | 16.53 KB | -| NSubstitute | 12,231.7 ns | 58.14 ns | 51.54 ns | 20.31 KB | -| FakeItEasy | 7,811.1 ns | 63.21 ns | 56.04 ns | 11.71 KB | +| **TUnit.Mocks** | 803.4 ns | 15.99 ns | 19.64 ns | 3.15 KB | +| Imposter | 1,518.2 ns | 28.46 ns | 27.95 ns | 10.59 KB | +| Mockolate | 600.7 ns | 4.77 ns | 4.23 ns | 2.35 KB | +| Moq | 115,836.4 ns | 1,128.03 ns | 1,055.16 ns | 16.53 KB | +| NSubstitute | 11,936.5 ns | 184.64 ns | 172.71 ns | 20.31 KB | +| FakeItEasy | 7,846.3 ns | 152.75 ns | 175.91 ns | 11.71 KB | ```mermaid %%{init: { @@ -92,8 +92,8 @@ xychart-beta xychart-beta title "Setup (Multiple) Performance Comparison" x-axis ["TUnit.Mocks", "Imposter", "Mockolate", "Moq", "NSubstitute", "FakeItEasy"] - y-axis "Time (ns)" 0 --> 140498 - bar [818.1, 1489.2, 595.3, 117081.2, 12231.7, 7811.1] + y-axis "Time (ns)" 0 --> 139004 + bar [803.4, 1518.2, 600.7, 115836.4, 11936.5, 7846.3] ``` ## 🎯 Key Insights @@ -106,4 +106,4 @@ This benchmark compares **TUnit.Mocks** (source-generated) against runtime proxy View the [mock benchmarks overview](/docs/benchmarks/mocks) for methodology details and environment information. ::: -*Last generated: 2026-07-17T03:20:48.806Z* +*Last generated: 2026-07-18T03:20:37.479Z* diff --git a/docs/docs/benchmarks/mocks/Verification.md b/docs/docs/benchmarks/mocks/Verification.md index 6ec0f4b49b..79b6ca9d4d 100644 --- a/docs/docs/benchmarks/mocks/Verification.md +++ b/docs/docs/benchmarks/mocks/Verification.md @@ -9,7 +9,7 @@ sidebar_position: 7 > Verifying mock method calls — comparing **TUnit.Mocks** (source-generated) against runtime proxy-based mocking libraries. :::info Last Updated -This benchmark was automatically generated on **2026-07-17** from the latest CI run. +This benchmark was automatically generated on **2026-07-18** from the latest CI run. **Environment:** Ubuntu Latest • .NET SDK 10.0.302 ::: @@ -20,12 +20,12 @@ Verifying mock method calls: | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **TUnit.Mocks** | 745.25 ns | 11.338 ns | 10.051 ns | 3008 B | -| Imposter | 707.00 ns | 14.139 ns | 31.034 ns | 4688 B | -| Mockolate | 414.70 ns | 8.292 ns | 11.070 ns | 2128 B | -| Moq | 352,228.21 ns | 1,987.909 ns | 1,762.230 ns | 24325 B | -| NSubstitute | 6,649.92 ns | 46.103 ns | 40.869 ns | 10064 B | -| FakeItEasy | 7,861.88 ns | 57.637 ns | 48.130 ns | 10722 B | +| **TUnit.Mocks** | 689.10 ns | 2.200 ns | 1.950 ns | 3008 B | +| Imposter | 684.66 ns | 6.232 ns | 5.830 ns | 4688 B | +| Mockolate | 406.49 ns | 1.674 ns | 1.307 ns | 2128 B | +| Moq | 347,635.64 ns | 3,176.632 ns | 2,652.631 ns | 24325 B | +| NSubstitute | 6,283.63 ns | 17.144 ns | 15.197 ns | 10064 B | +| FakeItEasy | 7,407.38 ns | 31.692 ns | 29.644 ns | 10722 B | ```mermaid %%{init: { @@ -51,8 +51,8 @@ Verifying mock method calls: xychart-beta title "Verification Performance Comparison" x-axis ["TUnit.Mocks", "Imposter", "Mockolate", "Moq", "NSubstitute", "FakeItEasy"] - y-axis "Time (ns)" 0 --> 422674 - bar [745.25, 707, 414.7, 352228.21, 6649.92, 7861.88] + y-axis "Time (ns)" 0 --> 417163 + bar [689.1, 684.66, 406.49, 347635.64, 6283.63, 7407.38] ``` --- @@ -61,12 +61,12 @@ xychart-beta | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **TUnit.Mocks** | 60.02 ns | 1.165 ns | 1.145 ns | 320 B | -| Imposter | 388.59 ns | 6.761 ns | 6.324 ns | 2400 B | -| Mockolate | 265.00 ns | 2.267 ns | 2.010 ns | 1144 B | -| Moq | 88,922.07 ns | 232.271 ns | 205.902 ns | 6918 B | -| NSubstitute | 3,710.28 ns | 26.917 ns | 25.178 ns | 7088 B | -| FakeItEasy | 3,893.22 ns | 33.859 ns | 31.672 ns | 5209 B | +| **TUnit.Mocks** | 52.39 ns | 0.419 ns | 0.372 ns | 320 B | +| Imposter | 321.12 ns | 1.590 ns | 1.328 ns | 2400 B | +| Mockolate | 230.38 ns | 1.168 ns | 1.092 ns | 1144 B | +| Moq | 88,245.84 ns | 434.153 ns | 406.107 ns | 6918 B | +| NSubstitute | 3,653.04 ns | 10.605 ns | 9.920 ns | 7088 B | +| FakeItEasy | 3,781.94 ns | 54.384 ns | 50.870 ns | 5209 B | ```mermaid %%{init: { @@ -92,8 +92,8 @@ xychart-beta xychart-beta title "Verification (Never) Performance Comparison" x-axis ["TUnit.Mocks", "Imposter", "Mockolate", "Moq", "NSubstitute", "FakeItEasy"] - y-axis "Time (ns)" 0 --> 106707 - bar [60.02, 388.59, 265, 88922.07, 3710.28, 3893.22] + y-axis "Time (ns)" 0 --> 105896 + bar [52.39, 321.12, 230.38, 88245.84, 3653.04, 3781.94] ``` --- @@ -102,12 +102,12 @@ xychart-beta | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **TUnit.Mocks** | 1,385.20 ns | 18.228 ns | 17.050 ns | 4472 B | -| Imposter | 2,005.28 ns | 24.760 ns | 21.949 ns | 11192 B | -| Mockolate | 1,187.08 ns | 23.685 ns | 48.382 ns | 5240 B | -| Moq | 475,632.96 ns | 3,960.335 ns | 3,704.499 ns | 34699 B | -| NSubstitute | 11,960.08 ns | 66.488 ns | 62.193 ns | 16762 B | -| FakeItEasy | 14,727.81 ns | 95.668 ns | 89.488 ns | 19457 B | +| **TUnit.Mocks** | 1,274.86 ns | 17.317 ns | 16.198 ns | 4472 B | +| Imposter | 1,818.39 ns | 36.213 ns | 33.874 ns | 11192 B | +| Mockolate | 1,161.97 ns | 20.433 ns | 18.113 ns | 5240 B | +| Moq | 483,704.83 ns | 2,577.177 ns | 2,284.601 ns | 34699 B | +| NSubstitute | 11,688.35 ns | 66.657 ns | 52.041 ns | 16929 B | +| FakeItEasy | 13,487.62 ns | 248.554 ns | 255.247 ns | 19233 B | ```mermaid %%{init: { @@ -133,8 +133,8 @@ xychart-beta xychart-beta title "Verification (Multiple) Performance Comparison" x-axis ["TUnit.Mocks", "Imposter", "Mockolate", "Moq", "NSubstitute", "FakeItEasy"] - y-axis "Time (ns)" 0 --> 570760 - bar [1385.2, 2005.28, 1187.08, 475632.96, 11960.08, 14727.81] + y-axis "Time (ns)" 0 --> 580446 + bar [1274.86, 1818.39, 1161.97, 483704.83, 11688.35, 13487.62] ``` ## 🎯 Key Insights @@ -147,4 +147,4 @@ This benchmark compares **TUnit.Mocks** (source-generated) against runtime proxy View the [mock benchmarks overview](/docs/benchmarks/mocks) for methodology details and environment information. ::: -*Last generated: 2026-07-17T03:20:48.806Z* +*Last generated: 2026-07-18T03:20:37.479Z* diff --git a/docs/docs/benchmarks/mocks/index.md b/docs/docs/benchmarks/mocks/index.md index b2ff7195ef..b200c3873a 100644 --- a/docs/docs/benchmarks/mocks/index.md +++ b/docs/docs/benchmarks/mocks/index.md @@ -7,7 +7,7 @@ sidebar_position: 4 # Mock Library Benchmarks :::info Last Updated -These benchmarks were automatically generated on **2026-07-17** from the latest CI run. +These benchmarks were automatically generated on **2026-07-18** from the latest CI run. **Environment:** Ubuntu Latest • .NET SDK 10.0.302 ::: @@ -76,4 +76,4 @@ These benchmarks run automatically daily via [GitHub Actions](https://github.com Each benchmark runs multiple iterations with statistical analysis to ensure accuracy. Results may vary based on hardware and test characteristics. ::: -*Last generated: 2026-07-17T03:20:48.806Z* +*Last generated: 2026-07-18T03:20:37.479Z* diff --git a/docs/static/benchmarks/mocks/Callback.json b/docs/static/benchmarks/mocks/Callback.json index 5b39615339..7392af83b5 100644 --- a/docs/static/benchmarks/mocks/Callback.json +++ b/docs/static/benchmarks/mocks/Callback.json @@ -1,5 +1,5 @@ { - "timestamp": "2026-07-17T03:20:48.806Z", + "timestamp": "2026-07-18T03:20:37.479Z", "category": "Callback", "description": "Callback registration and execution", "environment": { @@ -10,110 +10,110 @@ "results": [ { "Method": "TUnit.Mocks", - "Mean": "705.9 ns", - "Error": "12.13 ns", - "StdDev": "11.35 ns", + "Mean": "655.2 ns", + "Error": "6.41 ns", + "StdDev": "5.99 ns", "Gen0": "0.1898", "Gen1": "0.0019", "Allocated": "3.11 KB" }, { "Method": "Imposter", - "Mean": "495.0 ns", - "Error": "8.32 ns", - "StdDev": "7.79 ns", - "Gen0": "0.1621", - "Gen1": "0.0010", + "Mean": "471.4 ns", + "Error": "5.40 ns", + "StdDev": "5.05 ns", + "Gen0": "0.1626", + "Gen1": "0.0014", "Allocated": "2.66 KB" }, { "Method": "Mockolate", - "Mean": "374.5 ns", - "Error": "5.34 ns", - "StdDev": "5.00 ns", + "Mean": "347.4 ns", + "Error": "2.36 ns", + "StdDev": "2.21 ns", "Gen0": "0.1097", "Gen1": "0.0005", "Allocated": "1.8 KB" }, { "Method": "Moq", - "Mean": "187,749.2 ns", - "Error": "636.52 ns", - "StdDev": "595.40 ns", + "Mean": "133,770.5 ns", + "Error": "1,422.05 ns", + "StdDev": "1,260.61 ns", "Gen0": "0.4883", "Gen1": "-", "Allocated": "13.14 KB" }, { "Method": "NSubstitute", - "Mean": "4,849.4 ns", - "Error": "26.18 ns", - "StdDev": "24.49 ns", + "Mean": "4,456.9 ns", + "Error": "84.09 ns", + "StdDev": "78.66 ns", "Gen0": "0.4807", "Gen1": "0.0076", "Allocated": "7.85 KB" }, { "Method": "FakeItEasy", - "Mean": "5,577.3 ns", - "Error": "19.67 ns", - "StdDev": "17.44 ns", + "Mean": "4,787.2 ns", + "Error": "65.19 ns", + "StdDev": "60.97 ns", "Gen0": "0.4501", "Gen1": "0.0153", "Allocated": "7.44 KB" }, { "Method": "'TUnit.Mocks (with args)'", - "Mean": "846.5 ns", - "Error": "9.86 ns", - "StdDev": "9.22 ns", + "Mean": "771.7 ns", + "Error": "3.27 ns", + "StdDev": "2.90 ns", "Gen0": "0.1955", "Gen1": "0.0019", "Allocated": "3.2 KB" }, { "Method": "'Imposter (with args)'", - "Mean": "580.3 ns", - "Error": "5.58 ns", - "StdDev": "4.95 ns", + "Mean": "573.9 ns", + "Error": "4.82 ns", + "StdDev": "4.28 ns", "Gen0": "0.1726", "Gen1": "0.0010", "Allocated": "2.82 KB" }, { "Method": "'Mockolate (with args)'", - "Mean": "430.3 ns", - "Error": "6.02 ns", - "StdDev": "5.63 ns", + "Mean": "387.3 ns", + "Error": "2.37 ns", + "StdDev": "2.10 ns", "Gen0": "0.1125", "Gen1": "0.0005", "Allocated": "1.84 KB" }, { "Method": "'Moq (with args)'", - "Mean": "196,757.9 ns", - "Error": "723.51 ns", - "StdDev": "676.77 ns", + "Mean": "144,225.1 ns", + "Error": "1,534.94 ns", + "StdDev": "1,281.75 ns", "Gen0": "0.4883", "Gen1": "-", "Allocated": "13.73 KB" }, { "Method": "'NSubstitute (with args)'", - "Mean": "5,578.5 ns", - "Error": "28.29 ns", - "StdDev": "26.46 ns", - "Gen0": "0.4883", - "Gen1": "-", + "Mean": "4,914.5 ns", + "Error": "51.14 ns", + "StdDev": "42.70 ns", + "Gen0": "0.5112", + "Gen1": "0.0076", "Allocated": "8.41 KB" }, { "Method": "'FakeItEasy (with args)'", - "Mean": "6,904.4 ns", - "Error": "129.86 ns", - "StdDev": "121.47 ns", - "Gen0": "0.5493", - "Gen1": "0.0610", + "Mean": "5,963.3 ns", + "Error": "43.31 ns", + "StdDev": "38.40 ns", + "Gen0": "0.5722", + "Gen1": "0.0153", "Allocated": "9.4 KB" } ] diff --git a/docs/static/benchmarks/mocks/CombinedWorkflow.json b/docs/static/benchmarks/mocks/CombinedWorkflow.json index e34d2acc65..b1a5135668 100644 --- a/docs/static/benchmarks/mocks/CombinedWorkflow.json +++ b/docs/static/benchmarks/mocks/CombinedWorkflow.json @@ -1,5 +1,5 @@ { - "timestamp": "2026-07-17T03:20:48.806Z", + "timestamp": "2026-07-18T03:20:37.479Z", "category": "CombinedWorkflow", "description": "Full workflow: create → setup → invoke → verify", "environment": { @@ -10,16 +10,16 @@ "results": [ { "Method": "TUnit.Mocks", - "Mean": "2.119 μs", - "Error": "0.0188 μs", - "StdDev": "0.0167 μs", + "Mean": "1.974 μs", + "Error": "0.0329 μs", + "StdDev": "0.0308 μs", "Gen0": "0.3777", "Gen1": "0.0038", "Allocated": "6.23 KB" }, { "Method": "Imposter", - "Mean": "3.022 μs", + "Mean": "2.916 μs", "Error": "0.0375 μs", "StdDev": "0.0332 μs", "Gen0": "0.9613", @@ -28,36 +28,36 @@ }, { "Method": "Mockolate", - "Mean": "1.865 μs", - "Error": "0.0201 μs", - "StdDev": "0.0188 μs", + "Mean": "1.841 μs", + "Error": "0.0257 μs", + "StdDev": "0.0241 μs", "Gen0": "0.4501", "Gen1": "0.0076", "Allocated": "7.36 KB" }, { "Method": "Moq", - "Mean": "411.688 μs", - "Error": "2.8362 μs", - "StdDev": "2.6530 μs", + "Mean": "415.950 μs", + "Error": "1.7887 μs", + "StdDev": "1.5857 μs", "Gen0": "1.9531", "Gen1": "0.9766", "Allocated": "36.16 KB" }, { "Method": "NSubstitute", - "Mean": "18.220 μs", - "Error": "0.1458 μs", - "StdDev": "0.1293 μs", + "Mean": "17.697 μs", + "Error": "0.2103 μs", + "StdDev": "0.1967 μs", "Gen0": "1.6174", "Gen1": "0.0305", "Allocated": "26.72 KB" }, { "Method": "FakeItEasy", - "Mean": "19.560 μs", - "Error": "0.2402 μs", - "StdDev": "0.2247 μs", + "Mean": "19.178 μs", + "Error": "0.1046 μs", + "StdDev": "0.0927 μs", "Gen0": "1.5564", "Gen1": "0.0305", "Allocated": "25.52 KB" diff --git a/docs/static/benchmarks/mocks/Invocation.json b/docs/static/benchmarks/mocks/Invocation.json index b80e6e9db5..4bf9c0e431 100644 --- a/docs/static/benchmarks/mocks/Invocation.json +++ b/docs/static/benchmarks/mocks/Invocation.json @@ -1,5 +1,5 @@ { - "timestamp": "2026-07-17T03:20:48.806Z", + "timestamp": "2026-07-18T03:20:37.479Z", "category": "Invocation", "description": "Calling methods on mock objects", "environment": { @@ -10,162 +10,162 @@ "results": [ { "Method": "TUnit.Mocks", - "Mean": "273.21 ns", - "Error": "54.95 ns", - "StdDev": "3.012 ns", + "Mean": "268.82 ns", + "Error": "94.050 ns", + "StdDev": "5.155 ns", "Gen0": "0.0067", "Gen1": "0.0062", "Allocated": "128 B" }, { "Method": "Imposter", - "Mean": "295.60 ns", - "Error": "64.58 ns", - "StdDev": "3.540 ns", + "Mean": "289.23 ns", + "Error": "72.458 ns", + "StdDev": "3.972 ns", "Gen0": "0.0100", "Gen1": "0.0095", "Allocated": "168 B" }, { "Method": "Mockolate", - "Mean": "116.27 ns", - "Error": "54.60 ns", - "StdDev": "2.993 ns", + "Mean": "97.23 ns", + "Error": "8.163 ns", + "StdDev": "0.447 ns", "Gen0": "0.0050", - "Gen1": "0.0048", + "Gen1": "0.0049", "Allocated": "84 B" }, { "Method": "Moq", - "Mean": "826.32 ns", - "Error": "428.39 ns", - "StdDev": "23.482 ns", + "Mean": "779.18 ns", + "Error": "102.106 ns", + "StdDev": "5.597 ns", "Gen0": "0.0219", "Gen1": "0.0210", "Allocated": "376 B" }, { "Method": "NSubstitute", - "Mean": "711.93 ns", - "Error": "117.66 ns", - "StdDev": "6.449 ns", + "Mean": "687.43 ns", + "Error": "84.433 ns", + "StdDev": "4.628 ns", "Gen0": "0.0172", "Gen1": "0.0162", "Allocated": "304 B" }, { "Method": "FakeItEasy", - "Mean": "1,688.72 ns", - "Error": "615.50 ns", - "StdDev": "33.738 ns", - "Gen0": "0.0534", - "Gen1": "0.0496", + "Mean": "1,646.50 ns", + "Error": "171.102 ns", + "StdDev": "9.379 ns", + "Gen0": "0.0553", + "Gen1": "0.0534", "Allocated": "944 B" }, { "Method": "'TUnit.Mocks (String)'", - "Mean": "167.79 ns", - "Error": "78.26 ns", - "StdDev": "4.290 ns", + "Mean": "164.49 ns", + "Error": "77.738 ns", + "StdDev": "4.261 ns", "Gen0": "0.0052", "Gen1": "0.0050", "Allocated": "96 B" }, { "Method": "'Imposter (String)'", - "Mean": "296.53 ns", - "Error": "25.92 ns", - "StdDev": "1.421 ns", + "Mean": "289.85 ns", + "Error": "91.629 ns", + "StdDev": "5.023 ns", "Gen0": "0.0100", "Gen1": "0.0095", "Allocated": "168 B" }, { "Method": "'Mockolate (String)'", - "Mean": "93.26 ns", - "Error": "21.15 ns", - "StdDev": "1.159 ns", + "Mean": "91.17 ns", + "Error": "3.098 ns", + "StdDev": "0.170 ns", "Gen0": "0.0036", "Gen1": "0.0035", "Allocated": "60 B" }, { "Method": "'Moq (String)'", - "Mean": "549.13 ns", - "Error": "106.61 ns", - "StdDev": "5.843 ns", + "Mean": "512.51 ns", + "Error": "50.686 ns", + "StdDev": "2.778 ns", "Gen0": "0.0172", "Gen1": "0.0162", "Allocated": "296 B" }, { "Method": "'NSubstitute (String)'", - "Mean": "636.74 ns", - "Error": "195.01 ns", - "StdDev": "10.689 ns", + "Mean": "588.63 ns", + "Error": "217.284 ns", + "StdDev": "11.910 ns", "Gen0": "0.0153", "Gen1": "0.0143", "Allocated": "272 B" }, { "Method": "'FakeItEasy (String)'", - "Mean": "1,580.87 ns", - "Error": "263.68 ns", - "StdDev": "14.453 ns", + "Mean": "1,481.92 ns", + "Error": "165.295 ns", + "StdDev": "9.060 ns", "Gen0": "0.0458", "Gen1": "0.0439", "Allocated": "776 B" }, { "Method": "'TUnit.Mocks (100 calls)'", - "Mean": "27,119.94 ns", - "Error": "11,658.13 ns", - "StdDev": "639.021 ns", + "Mean": "26,660.50 ns", + "Error": "12,290.566 ns", + "StdDev": "673.687 ns", "Gen0": "0.6409", "Gen1": "0.6104", "Allocated": "12736 B" }, { "Method": "'Imposter (100 calls)'", - "Mean": "28,877.92 ns", - "Error": "6,810.75 ns", - "StdDev": "373.320 ns", + "Mean": "28,408.06 ns", + "Error": "6,953.330 ns", + "StdDev": "381.136 ns", "Gen0": "0.9766", "Gen1": "0.9155", "Allocated": "16800 B" }, { "Method": "'Mockolate (100 calls)'", - "Mean": "10,425.92 ns", - "Error": "3,862.76 ns", - "StdDev": "211.731 ns", + "Mean": "9,741.00 ns", + "Error": "2,523.004 ns", + "StdDev": "138.294 ns", "Gen0": "0.4883", "Gen1": "0.4730", "Allocated": "8400 B" }, { "Method": "'Moq (100 calls)'", - "Mean": "80,932.02 ns", - "Error": "4,243.47 ns", - "StdDev": "232.599 ns", + "Mean": "79,583.09 ns", + "Error": "24,667.273 ns", + "StdDev": "1,352.096 ns", "Gen0": "2.1973", "Gen1": "2.0752", "Allocated": "37600 B" }, { "Method": "'NSubstitute (100 calls)'", - "Mean": "70,858.46 ns", - "Error": "4,713.41 ns", - "StdDev": "258.358 ns", + "Mean": "67,980.85 ns", + "Error": "21,638.056 ns", + "StdDev": "1,186.055 ns", "Gen0": "1.7090", "Gen1": "1.5869", "Allocated": "30848 B" }, { "Method": "'FakeItEasy (100 calls)'", - "Mean": "178,405.95 ns", - "Error": "6,746.21 ns", - "StdDev": "369.782 ns", + "Mean": "166,533.82 ns", + "Error": "67,417.348 ns", + "StdDev": "3,695.372 ns", "Gen0": "5.6152", "Gen1": "5.3711", "Allocated": "94400 B" diff --git a/docs/static/benchmarks/mocks/MockCreation.json b/docs/static/benchmarks/mocks/MockCreation.json index 1fe52d0a60..3690aa5900 100644 --- a/docs/static/benchmarks/mocks/MockCreation.json +++ b/docs/static/benchmarks/mocks/MockCreation.json @@ -1,5 +1,5 @@ { - "timestamp": "2026-07-17T03:20:48.806Z", + "timestamp": "2026-07-18T03:20:37.479Z", "category": "MockCreation", "description": "Mock instance creation performance", "environment": { @@ -10,123 +10,123 @@ "results": [ { "Method": "TUnit.Mocks", - "Mean": "31.99 ns", - "Error": "0.682 ns", - "StdDev": "0.700 ns", - "Gen0": "0.0119", + "Mean": "31.95 ns", + "Error": "0.635 ns", + "StdDev": "0.594 ns", + "Gen0": "0.0079", "Gen1": "-", "Gen2": "-", "Allocated": "200 B" }, { "Method": "Imposter", - "Mean": "102.07 ns", - "Error": "0.742 ns", - "StdDev": "0.694 ns", - "Gen0": "0.0262", + "Mean": "97.86 ns", + "Error": "1.407 ns", + "StdDev": "1.316 ns", + "Gen0": "0.0175", "Gen1": "-", "Gen2": "-", "Allocated": "440 B" }, { "Method": "Mockolate", - "Mean": "18.04 ns", - "Error": "0.170 ns", - "StdDev": "0.150 ns", - "Gen0": "0.0095", + "Mean": "18.20 ns", + "Error": "0.389 ns", + "StdDev": "0.364 ns", + "Gen0": "0.0063", "Gen1": "-", "Gen2": "-", "Allocated": "160 B" }, { "Method": "Moq", - "Mean": "1,303.32 ns", - "Error": "25.278 ns", - "StdDev": "25.959 ns", - "Gen0": "0.1221", + "Mean": "1,306.58 ns", + "Error": "25.476 ns", + "StdDev": "25.021 ns", + "Gen0": "0.0801", "Gen1": "-", "Gen2": "-", "Allocated": "2048 B" }, { "Method": "NSubstitute", - "Mean": "1,821.50 ns", - "Error": "25.868 ns", - "StdDev": "22.931 ns", - "Gen0": "0.2975", + "Mean": "1,816.36 ns", + "Error": "13.766 ns", + "StdDev": "12.203 ns", + "Gen0": "0.1984", "Gen1": "0.0019", "Gen2": "-", "Allocated": "5000 B" }, { "Method": "FakeItEasy", - "Mean": "1,877.85 ns", - "Error": "34.474 ns", - "StdDev": "38.317 ns", - "Gen0": "0.1602", + "Mean": "1,681.08 ns", + "Error": "18.761 ns", + "StdDev": "17.549 ns", + "Gen0": "0.1068", "Gen1": "0.0038", "Gen2": "0.0019", - "Allocated": "2715 B" + "Allocated": "2723 B" }, { "Method": "'TUnit.Mocks (Repository)'", - "Mean": "30.44 ns", - "Error": "0.304 ns", - "StdDev": "0.269 ns", - "Gen0": "0.0119", + "Mean": "31.93 ns", + "Error": "0.720 ns", + "StdDev": "0.770 ns", + "Gen0": "0.0079", "Gen1": "-", "Gen2": "-", "Allocated": "200 B" }, { "Method": "'Imposter (Repository)'", - "Mean": "160.49 ns", - "Error": "1.458 ns", - "StdDev": "1.293 ns", - "Gen0": "0.0415", + "Mean": "156.44 ns", + "Error": "3.161 ns", + "StdDev": "2.956 ns", + "Gen0": "0.0277", "Gen1": "-", "Gen2": "-", "Allocated": "696 B" }, { "Method": "'Mockolate (Repository)'", - "Mean": "19.24 ns", - "Error": "0.270 ns", - "StdDev": "0.240 ns", - "Gen0": "0.0105", + "Mean": "19.20 ns", + "Error": "0.466 ns", + "StdDev": "0.852 ns", + "Gen0": "0.0070", "Gen1": "-", "Gen2": "-", "Allocated": "176 B" }, { "Method": "'Moq (Repository)'", - "Mean": "1,239.96 ns", - "Error": "14.447 ns", - "StdDev": "13.514 ns", - "Gen0": "0.1125", + "Mean": "1,315.37 ns", + "Error": "4.758 ns", + "StdDev": "4.451 ns", + "Gen0": "0.0744", "Gen1": "-", "Gen2": "-", "Allocated": "1912 B" }, { "Method": "'NSubstitute (Repository)'", - "Mean": "1,766.64 ns", - "Error": "28.811 ns", - "StdDev": "32.023 ns", - "Gen0": "0.2975", + "Mean": "1,804.07 ns", + "Error": "15.707 ns", + "StdDev": "14.692 ns", + "Gen0": "0.1984", "Gen1": "0.0019", "Gen2": "-", "Allocated": "5000 B" }, { "Method": "'FakeItEasy (Repository)'", - "Mean": "1,809.19 ns", - "Error": "35.980 ns", - "StdDev": "82.670 ns", - "Gen0": "0.1602", + "Mean": "1,689.29 ns", + "Error": "18.356 ns", + "StdDev": "17.170 ns", + "Gen0": "0.1068", "Gen1": "0.0038", "Gen2": "0.0019", - "Allocated": "2715 B" + "Allocated": "2723 B" } ] } \ No newline at end of file diff --git a/docs/static/benchmarks/mocks/Setup.json b/docs/static/benchmarks/mocks/Setup.json index c80630b4ec..0830dc5fd6 100644 --- a/docs/static/benchmarks/mocks/Setup.json +++ b/docs/static/benchmarks/mocks/Setup.json @@ -1,5 +1,5 @@ { - "timestamp": "2026-07-17T03:20:48.806Z", + "timestamp": "2026-07-18T03:20:37.479Z", "category": "Setup", "description": "Mock behavior configuration (returns, matchers)", "environment": { @@ -10,108 +10,108 @@ "results": [ { "Method": "TUnit.Mocks", - "Mean": "567.8 ns", - "Error": "4.26 ns", - "StdDev": "3.78 ns", + "Mean": "511.6 ns", + "Error": "6.39 ns", + "StdDev": "5.33 ns", "Gen0": "0.1431", "Gen1": "0.0010", "Allocated": "2.34 KB" }, { "Method": "Imposter", - "Mean": "887.0 ns", + "Mean": "816.5 ns", "Error": "12.93 ns", - "StdDev": "12.10 ns", + "StdDev": "15.39 ns", "Gen0": "0.3738", "Gen1": "0.0076", "Allocated": "6.12 KB" }, { "Method": "Mockolate", - "Mean": "340.3 ns", - "Error": "3.38 ns", - "StdDev": "3.16 ns", + "Mean": "311.3 ns", + "Error": "6.08 ns", + "StdDev": "8.32 ns", "Gen0": "0.0863", "Gen1": "-", "Allocated": "1.41 KB" }, { "Method": "Moq", - "Mean": "441,111.8 ns", - "Error": "1,703.21 ns", - "StdDev": "1,593.19 ns", + "Mean": "431,492.8 ns", + "Error": "4,573.71 ns", + "StdDev": "4,278.25 ns", "Gen0": "0.9766", "Gen1": "-", - "Allocated": "28.52 KB" + "Allocated": "28.63 KB" }, { "Method": "NSubstitute", - "Mean": "5,866.6 ns", - "Error": "52.26 ns", - "StdDev": "48.88 ns", + "Mean": "5,484.0 ns", + "Error": "49.98 ns", + "StdDev": "46.75 ns", "Gen0": "0.5493", - "Gen1": "-", - "Allocated": "9.06 KB" + "Gen1": "0.0076", + "Allocated": "9.01 KB" }, { "Method": "FakeItEasy", - "Mean": "8,591.2 ns", - "Error": "57.71 ns", - "StdDev": "51.16 ns", - "Gen0": "0.6256", - "Gen1": "0.0153", + "Mean": "8,085.3 ns", + "Error": "105.45 ns", + "StdDev": "98.64 ns", + "Gen0": "0.6104", + "Gen1": "0.0305", "Allocated": "10.45 KB" }, { "Method": "'TUnit.Mocks (Multiple)'", - "Mean": "818.1 ns", - "Error": "5.65 ns", - "StdDev": "5.01 ns", + "Mean": "803.4 ns", + "Error": "15.99 ns", + "StdDev": "19.64 ns", "Gen0": "0.1926", "Gen1": "0.0019", "Allocated": "3.15 KB" }, { "Method": "'Imposter (Multiple)'", - "Mean": "1,489.2 ns", - "Error": "17.66 ns", - "StdDev": "16.52 ns", + "Mean": "1,518.2 ns", + "Error": "28.46 ns", + "StdDev": "27.95 ns", "Gen0": "0.6485", "Gen1": "0.0248", "Allocated": "10.59 KB" }, { "Method": "'Mockolate (Multiple)'", - "Mean": "595.3 ns", - "Error": "4.99 ns", - "StdDev": "4.67 ns", + "Mean": "600.7 ns", + "Error": "4.77 ns", + "StdDev": "4.23 ns", "Gen0": "0.1431", "Gen1": "0.0010", "Allocated": "2.35 KB" }, { "Method": "'Moq (Multiple)'", - "Mean": "117,081.2 ns", - "Error": "574.26 ns", - "StdDev": "509.07 ns", + "Mean": "115,836.4 ns", + "Error": "1,128.03 ns", + "StdDev": "1,055.16 ns", "Gen0": "0.9766", "Gen1": "0.7324", "Allocated": "16.53 KB" }, { "Method": "'NSubstitute (Multiple)'", - "Mean": "12,231.7 ns", - "Error": "58.14 ns", - "StdDev": "51.54 ns", + "Mean": "11,936.5 ns", + "Error": "184.64 ns", + "StdDev": "172.71 ns", "Gen0": "1.2207", "Gen1": "-", "Allocated": "20.31 KB" }, { "Method": "'FakeItEasy (Multiple)'", - "Mean": "7,811.1 ns", - "Error": "63.21 ns", - "StdDev": "56.04 ns", + "Mean": "7,846.3 ns", + "Error": "152.75 ns", + "StdDev": "175.91 ns", "Gen0": "0.6714", "Gen1": "0.0610", "Allocated": "11.71 KB" diff --git a/docs/static/benchmarks/mocks/Verification.json b/docs/static/benchmarks/mocks/Verification.json index 4ac6b79052..647bc64ab4 100644 --- a/docs/static/benchmarks/mocks/Verification.json +++ b/docs/static/benchmarks/mocks/Verification.json @@ -1,5 +1,5 @@ { - "timestamp": "2026-07-17T03:20:48.806Z", + "timestamp": "2026-07-18T03:20:37.479Z", "category": "Verification", "description": "Verifying mock method calls", "environment": { @@ -10,165 +10,165 @@ "results": [ { "Method": "TUnit.Mocks", - "Mean": "745.25 ns", - "Error": "11.338 ns", - "StdDev": "10.051 ns", + "Mean": "689.10 ns", + "Error": "2.200 ns", + "StdDev": "1.950 ns", "Gen0": "0.1793", "Gen1": "0.0010", "Allocated": "3008 B" }, { "Method": "Imposter", - "Mean": "707.00 ns", - "Error": "14.139 ns", - "StdDev": "31.034 ns", + "Mean": "684.66 ns", + "Error": "6.232 ns", + "StdDev": "5.830 ns", "Gen0": "0.2794", "Gen1": "0.0038", "Allocated": "4688 B" }, { "Method": "Mockolate", - "Mean": "414.70 ns", - "Error": "8.292 ns", - "StdDev": "11.070 ns", + "Mean": "406.49 ns", + "Error": "1.674 ns", + "StdDev": "1.307 ns", "Gen0": "0.1268", "Gen1": "0.0005", "Allocated": "2128 B" }, { "Method": "Moq", - "Mean": "352,228.21 ns", - "Error": "1,987.909 ns", - "StdDev": "1,762.230 ns", + "Mean": "347,635.64 ns", + "Error": "3,176.632 ns", + "StdDev": "2,652.631 ns", "Gen0": "0.9766", "Gen1": "-", "Allocated": "24325 B" }, { "Method": "NSubstitute", - "Mean": "6,649.92 ns", - "Error": "46.103 ns", - "StdDev": "40.869 ns", - "Gen0": "0.5493", - "Gen1": "-", + "Mean": "6,283.63 ns", + "Error": "17.144 ns", + "StdDev": "15.197 ns", + "Gen0": "0.5951", + "Gen1": "0.0076", "Allocated": "10064 B" }, { "Method": "FakeItEasy", - "Mean": "7,861.88 ns", - "Error": "57.637 ns", - "StdDev": "48.130 ns", + "Mean": "7,407.38 ns", + "Error": "31.692 ns", + "StdDev": "29.644 ns", "Gen0": "0.6409", "Gen1": "0.0153", "Allocated": "10722 B" }, { "Method": "'TUnit.Mocks (Never)'", - "Mean": "60.02 ns", - "Error": "1.165 ns", - "StdDev": "1.145 ns", + "Mean": "52.39 ns", + "Error": "0.419 ns", + "StdDev": "0.372 ns", "Gen0": "0.0191", "Gen1": "-", "Allocated": "320 B" }, { "Method": "'Imposter (Never)'", - "Mean": "388.59 ns", - "Error": "6.761 ns", - "StdDev": "6.324 ns", + "Mean": "321.12 ns", + "Error": "1.590 ns", + "StdDev": "1.328 ns", "Gen0": "0.1431", "Gen1": "0.0010", "Allocated": "2400 B" }, { "Method": "'Mockolate (Never)'", - "Mean": "265.00 ns", - "Error": "2.267 ns", - "StdDev": "2.010 ns", + "Mean": "230.38 ns", + "Error": "1.168 ns", + "StdDev": "1.092 ns", "Gen0": "0.0682", "Gen1": "-", "Allocated": "1144 B" }, { "Method": "'Moq (Never)'", - "Mean": "88,922.07 ns", - "Error": "232.271 ns", - "StdDev": "205.902 ns", + "Mean": "88,245.84 ns", + "Error": "434.153 ns", + "StdDev": "406.107 ns", "Gen0": "0.2441", "Gen1": "-", "Allocated": "6918 B" }, { "Method": "'NSubstitute (Never)'", - "Mean": "3,710.28 ns", - "Error": "26.917 ns", - "StdDev": "25.178 ns", + "Mean": "3,653.04 ns", + "Error": "10.605 ns", + "StdDev": "9.920 ns", "Gen0": "0.4234", "Gen1": "0.0038", "Allocated": "7088 B" }, { "Method": "'FakeItEasy (Never)'", - "Mean": "3,893.22 ns", - "Error": "33.859 ns", - "StdDev": "31.672 ns", + "Mean": "3,781.94 ns", + "Error": "54.384 ns", + "StdDev": "50.870 ns", "Gen0": "0.3052", "Gen1": "0.0305", "Allocated": "5209 B" }, { "Method": "'TUnit.Mocks (Multiple)'", - "Mean": "1,385.20 ns", - "Error": "18.228 ns", - "StdDev": "17.050 ns", + "Mean": "1,274.86 ns", + "Error": "17.317 ns", + "StdDev": "16.198 ns", "Gen0": "0.2670", "Gen1": "0.0019", "Allocated": "4472 B" }, { "Method": "'Imposter (Multiple)'", - "Mean": "2,005.28 ns", - "Error": "24.760 ns", - "StdDev": "21.949 ns", + "Mean": "1,818.39 ns", + "Error": "36.213 ns", + "StdDev": "33.874 ns", "Gen0": "0.6676", - "Gen1": "0.0191", + "Gen1": "0.0210", "Allocated": "11192 B" }, { "Method": "'Mockolate (Multiple)'", - "Mean": "1,187.08 ns", - "Error": "23.685 ns", - "StdDev": "48.382 ns", + "Mean": "1,161.97 ns", + "Error": "20.433 ns", + "StdDev": "18.113 ns", "Gen0": "0.3128", "Gen1": "0.0038", "Allocated": "5240 B" }, { "Method": "'Moq (Multiple)'", - "Mean": "475,632.96 ns", - "Error": "3,960.335 ns", - "StdDev": "3,704.499 ns", + "Mean": "483,704.83 ns", + "Error": "2,577.177 ns", + "StdDev": "2,284.601 ns", "Gen0": "1.9531", "Gen1": "0.9766", "Allocated": "34699 B" }, { "Method": "'NSubstitute (Multiple)'", - "Mean": "11,960.08 ns", - "Error": "66.488 ns", - "StdDev": "62.193 ns", - "Gen0": "0.9918", - "Gen1": "0.0153", - "Allocated": "16762 B" + "Mean": "11,688.35 ns", + "Error": "66.657 ns", + "StdDev": "52.041 ns", + "Gen0": "0.9766", + "Gen1": "-", + "Allocated": "16929 B" }, { "Method": "'FakeItEasy (Multiple)'", - "Mean": "14,727.81 ns", - "Error": "95.668 ns", - "StdDev": "89.488 ns", + "Mean": "13,487.62 ns", + "Error": "248.554 ns", + "StdDev": "255.247 ns", "Gen0": "1.0986", "Gen1": "-", - "Allocated": "19457 B" + "Allocated": "19233 B" } ] } \ No newline at end of file diff --git a/docs/static/benchmarks/mocks/latest.json b/docs/static/benchmarks/mocks/latest.json index 61db19c111..d8af62d012 100644 --- a/docs/static/benchmarks/mocks/latest.json +++ b/docs/static/benchmarks/mocks/latest.json @@ -1,5 +1,5 @@ { - "timestamp": "2026-07-17T03:20:48.806Z", + "timestamp": "2026-07-18T03:20:37.479Z", "environment": { "benchmarkDotNetVersion": "BenchmarkDotNet v0.15.8, Linux Ubuntu 24.04.4 LTS (Noble Numbat)", "sdk": ".NET SDK 10.0.302", @@ -9,126 +9,126 @@ "Callback": [ { "Method": "TUnit.Mocks", - "Mean": "705.9 ns", - "Error": "12.13 ns", - "StdDev": "11.35 ns", + "Mean": "655.2 ns", + "Error": "6.41 ns", + "StdDev": "5.99 ns", "Gen0": "0.1898", "Gen1": "0.0019", "Allocated": "3.11 KB" }, { "Method": "Imposter", - "Mean": "495.0 ns", - "Error": "8.32 ns", - "StdDev": "7.79 ns", - "Gen0": "0.1621", - "Gen1": "0.0010", + "Mean": "471.4 ns", + "Error": "5.40 ns", + "StdDev": "5.05 ns", + "Gen0": "0.1626", + "Gen1": "0.0014", "Allocated": "2.66 KB" }, { "Method": "Mockolate", - "Mean": "374.5 ns", - "Error": "5.34 ns", - "StdDev": "5.00 ns", + "Mean": "347.4 ns", + "Error": "2.36 ns", + "StdDev": "2.21 ns", "Gen0": "0.1097", "Gen1": "0.0005", "Allocated": "1.8 KB" }, { "Method": "Moq", - "Mean": "187,749.2 ns", - "Error": "636.52 ns", - "StdDev": "595.40 ns", + "Mean": "133,770.5 ns", + "Error": "1,422.05 ns", + "StdDev": "1,260.61 ns", "Gen0": "0.4883", "Gen1": "-", "Allocated": "13.14 KB" }, { "Method": "NSubstitute", - "Mean": "4,849.4 ns", - "Error": "26.18 ns", - "StdDev": "24.49 ns", + "Mean": "4,456.9 ns", + "Error": "84.09 ns", + "StdDev": "78.66 ns", "Gen0": "0.4807", "Gen1": "0.0076", "Allocated": "7.85 KB" }, { "Method": "FakeItEasy", - "Mean": "5,577.3 ns", - "Error": "19.67 ns", - "StdDev": "17.44 ns", + "Mean": "4,787.2 ns", + "Error": "65.19 ns", + "StdDev": "60.97 ns", "Gen0": "0.4501", "Gen1": "0.0153", "Allocated": "7.44 KB" }, { "Method": "'TUnit.Mocks (with args)'", - "Mean": "846.5 ns", - "Error": "9.86 ns", - "StdDev": "9.22 ns", + "Mean": "771.7 ns", + "Error": "3.27 ns", + "StdDev": "2.90 ns", "Gen0": "0.1955", "Gen1": "0.0019", "Allocated": "3.2 KB" }, { "Method": "'Imposter (with args)'", - "Mean": "580.3 ns", - "Error": "5.58 ns", - "StdDev": "4.95 ns", + "Mean": "573.9 ns", + "Error": "4.82 ns", + "StdDev": "4.28 ns", "Gen0": "0.1726", "Gen1": "0.0010", "Allocated": "2.82 KB" }, { "Method": "'Mockolate (with args)'", - "Mean": "430.3 ns", - "Error": "6.02 ns", - "StdDev": "5.63 ns", + "Mean": "387.3 ns", + "Error": "2.37 ns", + "StdDev": "2.10 ns", "Gen0": "0.1125", "Gen1": "0.0005", "Allocated": "1.84 KB" }, { "Method": "'Moq (with args)'", - "Mean": "196,757.9 ns", - "Error": "723.51 ns", - "StdDev": "676.77 ns", + "Mean": "144,225.1 ns", + "Error": "1,534.94 ns", + "StdDev": "1,281.75 ns", "Gen0": "0.4883", "Gen1": "-", "Allocated": "13.73 KB" }, { "Method": "'NSubstitute (with args)'", - "Mean": "5,578.5 ns", - "Error": "28.29 ns", - "StdDev": "26.46 ns", - "Gen0": "0.4883", - "Gen1": "-", + "Mean": "4,914.5 ns", + "Error": "51.14 ns", + "StdDev": "42.70 ns", + "Gen0": "0.5112", + "Gen1": "0.0076", "Allocated": "8.41 KB" }, { "Method": "'FakeItEasy (with args)'", - "Mean": "6,904.4 ns", - "Error": "129.86 ns", - "StdDev": "121.47 ns", - "Gen0": "0.5493", - "Gen1": "0.0610", + "Mean": "5,963.3 ns", + "Error": "43.31 ns", + "StdDev": "38.40 ns", + "Gen0": "0.5722", + "Gen1": "0.0153", "Allocated": "9.4 KB" } ], "CombinedWorkflow": [ { "Method": "TUnit.Mocks", - "Mean": "2.119 μs", - "Error": "0.0188 μs", - "StdDev": "0.0167 μs", + "Mean": "1.974 μs", + "Error": "0.0329 μs", + "StdDev": "0.0308 μs", "Gen0": "0.3777", "Gen1": "0.0038", "Allocated": "6.23 KB" }, { "Method": "Imposter", - "Mean": "3.022 μs", + "Mean": "2.916 μs", "Error": "0.0375 μs", "StdDev": "0.0332 μs", "Gen0": "0.9613", @@ -137,36 +137,36 @@ }, { "Method": "Mockolate", - "Mean": "1.865 μs", - "Error": "0.0201 μs", - "StdDev": "0.0188 μs", + "Mean": "1.841 μs", + "Error": "0.0257 μs", + "StdDev": "0.0241 μs", "Gen0": "0.4501", "Gen1": "0.0076", "Allocated": "7.36 KB" }, { "Method": "Moq", - "Mean": "411.688 μs", - "Error": "2.8362 μs", - "StdDev": "2.6530 μs", + "Mean": "415.950 μs", + "Error": "1.7887 μs", + "StdDev": "1.5857 μs", "Gen0": "1.9531", "Gen1": "0.9766", "Allocated": "36.16 KB" }, { "Method": "NSubstitute", - "Mean": "18.220 μs", - "Error": "0.1458 μs", - "StdDev": "0.1293 μs", + "Mean": "17.697 μs", + "Error": "0.2103 μs", + "StdDev": "0.1967 μs", "Gen0": "1.6174", "Gen1": "0.0305", "Allocated": "26.72 KB" }, { "Method": "FakeItEasy", - "Mean": "19.560 μs", - "Error": "0.2402 μs", - "StdDev": "0.2247 μs", + "Mean": "19.178 μs", + "Error": "0.1046 μs", + "StdDev": "0.0927 μs", "Gen0": "1.5564", "Gen1": "0.0305", "Allocated": "25.52 KB" @@ -175,162 +175,162 @@ "Invocation": [ { "Method": "TUnit.Mocks", - "Mean": "273.21 ns", - "Error": "54.95 ns", - "StdDev": "3.012 ns", + "Mean": "268.82 ns", + "Error": "94.050 ns", + "StdDev": "5.155 ns", "Gen0": "0.0067", "Gen1": "0.0062", "Allocated": "128 B" }, { "Method": "Imposter", - "Mean": "295.60 ns", - "Error": "64.58 ns", - "StdDev": "3.540 ns", + "Mean": "289.23 ns", + "Error": "72.458 ns", + "StdDev": "3.972 ns", "Gen0": "0.0100", "Gen1": "0.0095", "Allocated": "168 B" }, { "Method": "Mockolate", - "Mean": "116.27 ns", - "Error": "54.60 ns", - "StdDev": "2.993 ns", + "Mean": "97.23 ns", + "Error": "8.163 ns", + "StdDev": "0.447 ns", "Gen0": "0.0050", - "Gen1": "0.0048", + "Gen1": "0.0049", "Allocated": "84 B" }, { "Method": "Moq", - "Mean": "826.32 ns", - "Error": "428.39 ns", - "StdDev": "23.482 ns", + "Mean": "779.18 ns", + "Error": "102.106 ns", + "StdDev": "5.597 ns", "Gen0": "0.0219", "Gen1": "0.0210", "Allocated": "376 B" }, { "Method": "NSubstitute", - "Mean": "711.93 ns", - "Error": "117.66 ns", - "StdDev": "6.449 ns", + "Mean": "687.43 ns", + "Error": "84.433 ns", + "StdDev": "4.628 ns", "Gen0": "0.0172", "Gen1": "0.0162", "Allocated": "304 B" }, { "Method": "FakeItEasy", - "Mean": "1,688.72 ns", - "Error": "615.50 ns", - "StdDev": "33.738 ns", - "Gen0": "0.0534", - "Gen1": "0.0496", + "Mean": "1,646.50 ns", + "Error": "171.102 ns", + "StdDev": "9.379 ns", + "Gen0": "0.0553", + "Gen1": "0.0534", "Allocated": "944 B" }, { "Method": "'TUnit.Mocks (String)'", - "Mean": "167.79 ns", - "Error": "78.26 ns", - "StdDev": "4.290 ns", + "Mean": "164.49 ns", + "Error": "77.738 ns", + "StdDev": "4.261 ns", "Gen0": "0.0052", "Gen1": "0.0050", "Allocated": "96 B" }, { "Method": "'Imposter (String)'", - "Mean": "296.53 ns", - "Error": "25.92 ns", - "StdDev": "1.421 ns", + "Mean": "289.85 ns", + "Error": "91.629 ns", + "StdDev": "5.023 ns", "Gen0": "0.0100", "Gen1": "0.0095", "Allocated": "168 B" }, { "Method": "'Mockolate (String)'", - "Mean": "93.26 ns", - "Error": "21.15 ns", - "StdDev": "1.159 ns", + "Mean": "91.17 ns", + "Error": "3.098 ns", + "StdDev": "0.170 ns", "Gen0": "0.0036", "Gen1": "0.0035", "Allocated": "60 B" }, { "Method": "'Moq (String)'", - "Mean": "549.13 ns", - "Error": "106.61 ns", - "StdDev": "5.843 ns", + "Mean": "512.51 ns", + "Error": "50.686 ns", + "StdDev": "2.778 ns", "Gen0": "0.0172", "Gen1": "0.0162", "Allocated": "296 B" }, { "Method": "'NSubstitute (String)'", - "Mean": "636.74 ns", - "Error": "195.01 ns", - "StdDev": "10.689 ns", + "Mean": "588.63 ns", + "Error": "217.284 ns", + "StdDev": "11.910 ns", "Gen0": "0.0153", "Gen1": "0.0143", "Allocated": "272 B" }, { "Method": "'FakeItEasy (String)'", - "Mean": "1,580.87 ns", - "Error": "263.68 ns", - "StdDev": "14.453 ns", + "Mean": "1,481.92 ns", + "Error": "165.295 ns", + "StdDev": "9.060 ns", "Gen0": "0.0458", "Gen1": "0.0439", "Allocated": "776 B" }, { "Method": "'TUnit.Mocks (100 calls)'", - "Mean": "27,119.94 ns", - "Error": "11,658.13 ns", - "StdDev": "639.021 ns", + "Mean": "26,660.50 ns", + "Error": "12,290.566 ns", + "StdDev": "673.687 ns", "Gen0": "0.6409", "Gen1": "0.6104", "Allocated": "12736 B" }, { "Method": "'Imposter (100 calls)'", - "Mean": "28,877.92 ns", - "Error": "6,810.75 ns", - "StdDev": "373.320 ns", + "Mean": "28,408.06 ns", + "Error": "6,953.330 ns", + "StdDev": "381.136 ns", "Gen0": "0.9766", "Gen1": "0.9155", "Allocated": "16800 B" }, { "Method": "'Mockolate (100 calls)'", - "Mean": "10,425.92 ns", - "Error": "3,862.76 ns", - "StdDev": "211.731 ns", + "Mean": "9,741.00 ns", + "Error": "2,523.004 ns", + "StdDev": "138.294 ns", "Gen0": "0.4883", "Gen1": "0.4730", "Allocated": "8400 B" }, { "Method": "'Moq (100 calls)'", - "Mean": "80,932.02 ns", - "Error": "4,243.47 ns", - "StdDev": "232.599 ns", + "Mean": "79,583.09 ns", + "Error": "24,667.273 ns", + "StdDev": "1,352.096 ns", "Gen0": "2.1973", "Gen1": "2.0752", "Allocated": "37600 B" }, { "Method": "'NSubstitute (100 calls)'", - "Mean": "70,858.46 ns", - "Error": "4,713.41 ns", - "StdDev": "258.358 ns", + "Mean": "67,980.85 ns", + "Error": "21,638.056 ns", + "StdDev": "1,186.055 ns", "Gen0": "1.7090", "Gen1": "1.5869", "Allocated": "30848 B" }, { "Method": "'FakeItEasy (100 calls)'", - "Mean": "178,405.95 ns", - "Error": "6,746.21 ns", - "StdDev": "369.782 ns", + "Mean": "166,533.82 ns", + "Error": "67,417.348 ns", + "StdDev": "3,695.372 ns", "Gen0": "5.6152", "Gen1": "5.3711", "Allocated": "94400 B" @@ -339,230 +339,230 @@ "MockCreation": [ { "Method": "TUnit.Mocks", - "Mean": "31.99 ns", - "Error": "0.682 ns", - "StdDev": "0.700 ns", - "Gen0": "0.0119", + "Mean": "31.95 ns", + "Error": "0.635 ns", + "StdDev": "0.594 ns", + "Gen0": "0.0079", "Gen1": "-", "Gen2": "-", "Allocated": "200 B" }, { "Method": "Imposter", - "Mean": "102.07 ns", - "Error": "0.742 ns", - "StdDev": "0.694 ns", - "Gen0": "0.0262", + "Mean": "97.86 ns", + "Error": "1.407 ns", + "StdDev": "1.316 ns", + "Gen0": "0.0175", "Gen1": "-", "Gen2": "-", "Allocated": "440 B" }, { "Method": "Mockolate", - "Mean": "18.04 ns", - "Error": "0.170 ns", - "StdDev": "0.150 ns", - "Gen0": "0.0095", + "Mean": "18.20 ns", + "Error": "0.389 ns", + "StdDev": "0.364 ns", + "Gen0": "0.0063", "Gen1": "-", "Gen2": "-", "Allocated": "160 B" }, { "Method": "Moq", - "Mean": "1,303.32 ns", - "Error": "25.278 ns", - "StdDev": "25.959 ns", - "Gen0": "0.1221", + "Mean": "1,306.58 ns", + "Error": "25.476 ns", + "StdDev": "25.021 ns", + "Gen0": "0.0801", "Gen1": "-", "Gen2": "-", "Allocated": "2048 B" }, { "Method": "NSubstitute", - "Mean": "1,821.50 ns", - "Error": "25.868 ns", - "StdDev": "22.931 ns", - "Gen0": "0.2975", + "Mean": "1,816.36 ns", + "Error": "13.766 ns", + "StdDev": "12.203 ns", + "Gen0": "0.1984", "Gen1": "0.0019", "Gen2": "-", "Allocated": "5000 B" }, { "Method": "FakeItEasy", - "Mean": "1,877.85 ns", - "Error": "34.474 ns", - "StdDev": "38.317 ns", - "Gen0": "0.1602", + "Mean": "1,681.08 ns", + "Error": "18.761 ns", + "StdDev": "17.549 ns", + "Gen0": "0.1068", "Gen1": "0.0038", "Gen2": "0.0019", - "Allocated": "2715 B" + "Allocated": "2723 B" }, { "Method": "'TUnit.Mocks (Repository)'", - "Mean": "30.44 ns", - "Error": "0.304 ns", - "StdDev": "0.269 ns", - "Gen0": "0.0119", + "Mean": "31.93 ns", + "Error": "0.720 ns", + "StdDev": "0.770 ns", + "Gen0": "0.0079", "Gen1": "-", "Gen2": "-", "Allocated": "200 B" }, { "Method": "'Imposter (Repository)'", - "Mean": "160.49 ns", - "Error": "1.458 ns", - "StdDev": "1.293 ns", - "Gen0": "0.0415", + "Mean": "156.44 ns", + "Error": "3.161 ns", + "StdDev": "2.956 ns", + "Gen0": "0.0277", "Gen1": "-", "Gen2": "-", "Allocated": "696 B" }, { "Method": "'Mockolate (Repository)'", - "Mean": "19.24 ns", - "Error": "0.270 ns", - "StdDev": "0.240 ns", - "Gen0": "0.0105", + "Mean": "19.20 ns", + "Error": "0.466 ns", + "StdDev": "0.852 ns", + "Gen0": "0.0070", "Gen1": "-", "Gen2": "-", "Allocated": "176 B" }, { "Method": "'Moq (Repository)'", - "Mean": "1,239.96 ns", - "Error": "14.447 ns", - "StdDev": "13.514 ns", - "Gen0": "0.1125", + "Mean": "1,315.37 ns", + "Error": "4.758 ns", + "StdDev": "4.451 ns", + "Gen0": "0.0744", "Gen1": "-", "Gen2": "-", "Allocated": "1912 B" }, { "Method": "'NSubstitute (Repository)'", - "Mean": "1,766.64 ns", - "Error": "28.811 ns", - "StdDev": "32.023 ns", - "Gen0": "0.2975", + "Mean": "1,804.07 ns", + "Error": "15.707 ns", + "StdDev": "14.692 ns", + "Gen0": "0.1984", "Gen1": "0.0019", "Gen2": "-", "Allocated": "5000 B" }, { "Method": "'FakeItEasy (Repository)'", - "Mean": "1,809.19 ns", - "Error": "35.980 ns", - "StdDev": "82.670 ns", - "Gen0": "0.1602", + "Mean": "1,689.29 ns", + "Error": "18.356 ns", + "StdDev": "17.170 ns", + "Gen0": "0.1068", "Gen1": "0.0038", "Gen2": "0.0019", - "Allocated": "2715 B" + "Allocated": "2723 B" } ], "Setup": [ { "Method": "TUnit.Mocks", - "Mean": "567.8 ns", - "Error": "4.26 ns", - "StdDev": "3.78 ns", + "Mean": "511.6 ns", + "Error": "6.39 ns", + "StdDev": "5.33 ns", "Gen0": "0.1431", "Gen1": "0.0010", "Allocated": "2.34 KB" }, { "Method": "Imposter", - "Mean": "887.0 ns", + "Mean": "816.5 ns", "Error": "12.93 ns", - "StdDev": "12.10 ns", + "StdDev": "15.39 ns", "Gen0": "0.3738", "Gen1": "0.0076", "Allocated": "6.12 KB" }, { "Method": "Mockolate", - "Mean": "340.3 ns", - "Error": "3.38 ns", - "StdDev": "3.16 ns", + "Mean": "311.3 ns", + "Error": "6.08 ns", + "StdDev": "8.32 ns", "Gen0": "0.0863", "Gen1": "-", "Allocated": "1.41 KB" }, { "Method": "Moq", - "Mean": "441,111.8 ns", - "Error": "1,703.21 ns", - "StdDev": "1,593.19 ns", + "Mean": "431,492.8 ns", + "Error": "4,573.71 ns", + "StdDev": "4,278.25 ns", "Gen0": "0.9766", "Gen1": "-", - "Allocated": "28.52 KB" + "Allocated": "28.63 KB" }, { "Method": "NSubstitute", - "Mean": "5,866.6 ns", - "Error": "52.26 ns", - "StdDev": "48.88 ns", + "Mean": "5,484.0 ns", + "Error": "49.98 ns", + "StdDev": "46.75 ns", "Gen0": "0.5493", - "Gen1": "-", - "Allocated": "9.06 KB" + "Gen1": "0.0076", + "Allocated": "9.01 KB" }, { "Method": "FakeItEasy", - "Mean": "8,591.2 ns", - "Error": "57.71 ns", - "StdDev": "51.16 ns", - "Gen0": "0.6256", - "Gen1": "0.0153", + "Mean": "8,085.3 ns", + "Error": "105.45 ns", + "StdDev": "98.64 ns", + "Gen0": "0.6104", + "Gen1": "0.0305", "Allocated": "10.45 KB" }, { "Method": "'TUnit.Mocks (Multiple)'", - "Mean": "818.1 ns", - "Error": "5.65 ns", - "StdDev": "5.01 ns", + "Mean": "803.4 ns", + "Error": "15.99 ns", + "StdDev": "19.64 ns", "Gen0": "0.1926", "Gen1": "0.0019", "Allocated": "3.15 KB" }, { "Method": "'Imposter (Multiple)'", - "Mean": "1,489.2 ns", - "Error": "17.66 ns", - "StdDev": "16.52 ns", + "Mean": "1,518.2 ns", + "Error": "28.46 ns", + "StdDev": "27.95 ns", "Gen0": "0.6485", "Gen1": "0.0248", "Allocated": "10.59 KB" }, { "Method": "'Mockolate (Multiple)'", - "Mean": "595.3 ns", - "Error": "4.99 ns", - "StdDev": "4.67 ns", + "Mean": "600.7 ns", + "Error": "4.77 ns", + "StdDev": "4.23 ns", "Gen0": "0.1431", "Gen1": "0.0010", "Allocated": "2.35 KB" }, { "Method": "'Moq (Multiple)'", - "Mean": "117,081.2 ns", - "Error": "574.26 ns", - "StdDev": "509.07 ns", + "Mean": "115,836.4 ns", + "Error": "1,128.03 ns", + "StdDev": "1,055.16 ns", "Gen0": "0.9766", "Gen1": "0.7324", "Allocated": "16.53 KB" }, { "Method": "'NSubstitute (Multiple)'", - "Mean": "12,231.7 ns", - "Error": "58.14 ns", - "StdDev": "51.54 ns", + "Mean": "11,936.5 ns", + "Error": "184.64 ns", + "StdDev": "172.71 ns", "Gen0": "1.2207", "Gen1": "-", "Allocated": "20.31 KB" }, { "Method": "'FakeItEasy (Multiple)'", - "Mean": "7,811.1 ns", - "Error": "63.21 ns", - "StdDev": "56.04 ns", + "Mean": "7,846.3 ns", + "Error": "152.75 ns", + "StdDev": "175.91 ns", "Gen0": "0.6714", "Gen1": "0.0610", "Allocated": "11.71 KB" @@ -571,171 +571,171 @@ "Verification": [ { "Method": "TUnit.Mocks", - "Mean": "745.25 ns", - "Error": "11.338 ns", - "StdDev": "10.051 ns", + "Mean": "689.10 ns", + "Error": "2.200 ns", + "StdDev": "1.950 ns", "Gen0": "0.1793", "Gen1": "0.0010", "Allocated": "3008 B" }, { "Method": "Imposter", - "Mean": "707.00 ns", - "Error": "14.139 ns", - "StdDev": "31.034 ns", + "Mean": "684.66 ns", + "Error": "6.232 ns", + "StdDev": "5.830 ns", "Gen0": "0.2794", "Gen1": "0.0038", "Allocated": "4688 B" }, { "Method": "Mockolate", - "Mean": "414.70 ns", - "Error": "8.292 ns", - "StdDev": "11.070 ns", + "Mean": "406.49 ns", + "Error": "1.674 ns", + "StdDev": "1.307 ns", "Gen0": "0.1268", "Gen1": "0.0005", "Allocated": "2128 B" }, { "Method": "Moq", - "Mean": "352,228.21 ns", - "Error": "1,987.909 ns", - "StdDev": "1,762.230 ns", + "Mean": "347,635.64 ns", + "Error": "3,176.632 ns", + "StdDev": "2,652.631 ns", "Gen0": "0.9766", "Gen1": "-", "Allocated": "24325 B" }, { "Method": "NSubstitute", - "Mean": "6,649.92 ns", - "Error": "46.103 ns", - "StdDev": "40.869 ns", - "Gen0": "0.5493", - "Gen1": "-", + "Mean": "6,283.63 ns", + "Error": "17.144 ns", + "StdDev": "15.197 ns", + "Gen0": "0.5951", + "Gen1": "0.0076", "Allocated": "10064 B" }, { "Method": "FakeItEasy", - "Mean": "7,861.88 ns", - "Error": "57.637 ns", - "StdDev": "48.130 ns", + "Mean": "7,407.38 ns", + "Error": "31.692 ns", + "StdDev": "29.644 ns", "Gen0": "0.6409", "Gen1": "0.0153", "Allocated": "10722 B" }, { "Method": "'TUnit.Mocks (Never)'", - "Mean": "60.02 ns", - "Error": "1.165 ns", - "StdDev": "1.145 ns", + "Mean": "52.39 ns", + "Error": "0.419 ns", + "StdDev": "0.372 ns", "Gen0": "0.0191", "Gen1": "-", "Allocated": "320 B" }, { "Method": "'Imposter (Never)'", - "Mean": "388.59 ns", - "Error": "6.761 ns", - "StdDev": "6.324 ns", + "Mean": "321.12 ns", + "Error": "1.590 ns", + "StdDev": "1.328 ns", "Gen0": "0.1431", "Gen1": "0.0010", "Allocated": "2400 B" }, { "Method": "'Mockolate (Never)'", - "Mean": "265.00 ns", - "Error": "2.267 ns", - "StdDev": "2.010 ns", + "Mean": "230.38 ns", + "Error": "1.168 ns", + "StdDev": "1.092 ns", "Gen0": "0.0682", "Gen1": "-", "Allocated": "1144 B" }, { "Method": "'Moq (Never)'", - "Mean": "88,922.07 ns", - "Error": "232.271 ns", - "StdDev": "205.902 ns", + "Mean": "88,245.84 ns", + "Error": "434.153 ns", + "StdDev": "406.107 ns", "Gen0": "0.2441", "Gen1": "-", "Allocated": "6918 B" }, { "Method": "'NSubstitute (Never)'", - "Mean": "3,710.28 ns", - "Error": "26.917 ns", - "StdDev": "25.178 ns", + "Mean": "3,653.04 ns", + "Error": "10.605 ns", + "StdDev": "9.920 ns", "Gen0": "0.4234", "Gen1": "0.0038", "Allocated": "7088 B" }, { "Method": "'FakeItEasy (Never)'", - "Mean": "3,893.22 ns", - "Error": "33.859 ns", - "StdDev": "31.672 ns", + "Mean": "3,781.94 ns", + "Error": "54.384 ns", + "StdDev": "50.870 ns", "Gen0": "0.3052", "Gen1": "0.0305", "Allocated": "5209 B" }, { "Method": "'TUnit.Mocks (Multiple)'", - "Mean": "1,385.20 ns", - "Error": "18.228 ns", - "StdDev": "17.050 ns", + "Mean": "1,274.86 ns", + "Error": "17.317 ns", + "StdDev": "16.198 ns", "Gen0": "0.2670", "Gen1": "0.0019", "Allocated": "4472 B" }, { "Method": "'Imposter (Multiple)'", - "Mean": "2,005.28 ns", - "Error": "24.760 ns", - "StdDev": "21.949 ns", + "Mean": "1,818.39 ns", + "Error": "36.213 ns", + "StdDev": "33.874 ns", "Gen0": "0.6676", - "Gen1": "0.0191", + "Gen1": "0.0210", "Allocated": "11192 B" }, { "Method": "'Mockolate (Multiple)'", - "Mean": "1,187.08 ns", - "Error": "23.685 ns", - "StdDev": "48.382 ns", + "Mean": "1,161.97 ns", + "Error": "20.433 ns", + "StdDev": "18.113 ns", "Gen0": "0.3128", "Gen1": "0.0038", "Allocated": "5240 B" }, { "Method": "'Moq (Multiple)'", - "Mean": "475,632.96 ns", - "Error": "3,960.335 ns", - "StdDev": "3,704.499 ns", + "Mean": "483,704.83 ns", + "Error": "2,577.177 ns", + "StdDev": "2,284.601 ns", "Gen0": "1.9531", "Gen1": "0.9766", "Allocated": "34699 B" }, { "Method": "'NSubstitute (Multiple)'", - "Mean": "11,960.08 ns", - "Error": "66.488 ns", - "StdDev": "62.193 ns", - "Gen0": "0.9918", - "Gen1": "0.0153", - "Allocated": "16762 B" + "Mean": "11,688.35 ns", + "Error": "66.657 ns", + "StdDev": "52.041 ns", + "Gen0": "0.9766", + "Gen1": "-", + "Allocated": "16929 B" }, { "Method": "'FakeItEasy (Multiple)'", - "Mean": "14,727.81 ns", - "Error": "95.668 ns", - "StdDev": "89.488 ns", + "Mean": "13,487.62 ns", + "Error": "248.554 ns", + "StdDev": "255.247 ns", "Gen0": "1.0986", "Gen1": "-", - "Allocated": "19457 B" + "Allocated": "19233 B" } ] }, "stats": { "categoryCount": 6, "totalBenchmarks": 78, - "lastUpdated": "2026-07-17T03:20:48.806Z" + "lastUpdated": "2026-07-18T03:20:37.479Z" } } \ No newline at end of file diff --git a/docs/static/benchmarks/mocks/summary.json b/docs/static/benchmarks/mocks/summary.json index 8c771d8421..431c4c4f54 100644 --- a/docs/static/benchmarks/mocks/summary.json +++ b/docs/static/benchmarks/mocks/summary.json @@ -7,7 +7,7 @@ "Setup", "Verification" ], - "timestamp": "2026-07-17", + "timestamp": "2026-07-18", "environment": "Ubuntu Latest • .NET SDK 10.0.302", "libraries": [ "TUnit.Mocks",