diff --git a/docs/docs/benchmarks/mocks/Callback.md b/docs/docs/benchmarks/mocks/Callback.md index 098def9e7f..b872017887 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-16** from the latest CI run. +This benchmark was automatically generated on **2026-07-17** 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** | 673.6 ns | 1.86 ns | 1.74 ns | 3.11 KB | -| Imposter | 462.0 ns | 1.24 ns | 1.10 ns | 2.66 KB | -| Mockolate | 336.4 ns | 1.32 ns | 1.17 ns | 1.8 KB | -| Moq | 136,059.2 ns | 815.04 ns | 680.59 ns | 13.29 KB | -| NSubstitute | 4,227.0 ns | 22.93 ns | 20.33 ns | 7.85 KB | -| FakeItEasy | 4,509.0 ns | 32.27 ns | 28.60 ns | 7.44 KB | +| **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 | ```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 --> 163272 - bar [673.6, 462, 336.4, 136059.2, 4227, 4509] + y-axis "Time (ns)" 0 --> 225300 + bar [705.9, 495, 374.5, 187749.2, 4849.4, 5577.3] ``` --- @@ -61,12 +61,12 @@ xychart-beta | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **TUnit.Mocks** | 766.9 ns | 4.45 ns | 4.16 ns | 3.2 KB | -| Imposter | 534.5 ns | 1.43 ns | 1.27 ns | 2.82 KB | -| Mockolate | 380.3 ns | 1.78 ns | 1.66 ns | 1.84 KB | -| Moq | 142,391.3 ns | 1,023.46 ns | 907.27 ns | 13.73 KB | -| NSubstitute | 4,704.0 ns | 13.07 ns | 12.23 ns | 8.41 KB | -| FakeItEasy | 5,804.3 ns | 36.63 ns | 34.26 ns | 9.26 KB | +| **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 | ```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 --> 170870 - bar [766.9, 534.5, 380.3, 142391.3, 4704, 5804.3] + y-axis "Time (ns)" 0 --> 236110 + bar [846.5, 580.3, 430.3, 196757.9, 5578.5, 6904.4] ``` ## 🎯 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-16T03:22:07.543Z* +*Last generated: 2026-07-17T03:20:48.806Z* diff --git a/docs/docs/benchmarks/mocks/CombinedWorkflow.md b/docs/docs/benchmarks/mocks/CombinedWorkflow.md index 53c80a201c..9e4b4b411b 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-16** from the latest CI run. +This benchmark was automatically generated on **2026-07-17** 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** | 1.535 μs | 0.0307 μs | 0.0410 μs | 6.23 KB | -| Imposter | 2.560 μs | 0.0816 μs | 0.2405 μs | 15.71 KB | -| Mockolate | 1.298 μs | 0.0254 μs | 0.0459 μs | 7.36 KB | -| Moq | 145.691 μs | 1.7890 μs | 1.4939 μs | 36.36 KB | -| NSubstitute | 13.383 μs | 0.2510 μs | 0.2465 μs | 26.72 KB | -| FakeItEasy | 10.772 μs | 0.2105 μs | 0.2253 μs | 25.51 KB | +| **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 | ```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 --> 175 - bar [1.535, 2.56, 1.298, 145.691, 13.383, 10.772] + y-axis "Time (μs)" 0 --> 495 + bar [2.119, 3.022, 1.865, 411.688, 18.22, 19.56] ``` ## 🎯 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-16T03:22:07.543Z* +*Last generated: 2026-07-17T03:20:48.806Z* diff --git a/docs/docs/benchmarks/mocks/Invocation.md b/docs/docs/benchmarks/mocks/Invocation.md index 31213e3364..18971bb7af 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-16** from the latest CI run. +This benchmark was automatically generated on **2026-07-17** 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** | 281.48 ns | 79.32 ns | 4.348 ns | 128 B | -| Imposter | 299.91 ns | 60.08 ns | 3.293 ns | 168 B | -| Mockolate | 107.51 ns | 20.59 ns | 1.129 ns | 84 B | -| Moq | 799.88 ns | 81.14 ns | 4.448 ns | 376 B | -| NSubstitute | 731.28 ns | 73.30 ns | 4.018 ns | 304 B | -| FakeItEasy | 1,735.17 ns | 354.64 ns | 19.439 ns | 944 B | +| **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 | ```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 --> 2083 - bar [281.48, 299.91, 107.51, 799.88, 731.28, 1735.17] + y-axis "Time (ns)" 0 --> 2027 + bar [273.21, 295.6, 116.27, 826.32, 711.93, 1688.72] ``` --- @@ -61,12 +61,12 @@ xychart-beta | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **TUnit.Mocks** | 174.93 ns | 71.18 ns | 3.902 ns | 96 B | -| Imposter | 302.20 ns | 100.49 ns | 5.508 ns | 168 B | -| Mockolate | 97.57 ns | 11.39 ns | 0.624 ns | 60 B | -| Moq | 543.42 ns | 47.08 ns | 2.580 ns | 296 B | -| NSubstitute | 598.20 ns | 161.76 ns | 8.867 ns | 272 B | -| FakeItEasy | 1,560.51 ns | 151.59 ns | 8.309 ns | 776 B | +| **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 | ```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 --> 1873 - bar [174.93, 302.2, 97.57, 543.42, 598.2, 1560.51] + y-axis "Time (ns)" 0 --> 1898 + bar [167.79, 296.53, 93.26, 549.13, 636.74, 1580.87] ``` --- @@ -102,12 +102,12 @@ xychart-beta | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **TUnit.Mocks** | 27,313.01 ns | 13,098.03 ns | 717.947 ns | 12736 B | -| Imposter | 29,713.79 ns | 7,045.81 ns | 386.205 ns | 16800 B | -| Mockolate | 10,720.10 ns | 3,209.51 ns | 175.924 ns | 8400 B | -| Moq | 78,900.23 ns | 18,990.50 ns | 1,040.933 ns | 37600 B | -| NSubstitute | 75,178.99 ns | 10,934.37 ns | 599.350 ns | 36448 B | -| FakeItEasy | 176,434.93 ns | 74,355.66 ns | 4,075.685 ns | 94400 B | +| **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 | ```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 --> 211722 - bar [27313.01, 29713.79, 10720.1, 78900.23, 75178.99, 176434.93] + y-axis "Time (ns)" 0 --> 214088 + bar [27119.94, 28877.92, 10425.92, 80932.02, 70858.46, 178405.95] ``` ## 🎯 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-16T03:22:07.543Z* +*Last generated: 2026-07-17T03:20:48.806Z* diff --git a/docs/docs/benchmarks/mocks/MockCreation.md b/docs/docs/benchmarks/mocks/MockCreation.md index 77ca5c0419..1380b81b16 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-16** from the latest CI run. +This benchmark was automatically generated on **2026-07-17** 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** | 29.70 ns | 0.452 ns | 0.400 ns | 200 B | -| Imposter | 102.82 ns | 0.692 ns | 0.613 ns | 440 B | -| Mockolate | 18.30 ns | 0.178 ns | 0.149 ns | 160 B | -| Moq | 1,277.23 ns | 21.202 ns | 19.832 ns | 2048 B | -| NSubstitute | 1,731.47 ns | 21.570 ns | 20.176 ns | 5000 B | -| FakeItEasy | 1,776.40 ns | 34.686 ns | 43.867 ns | 2715 B | +| **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 | ```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 --> 2132 - bar [29.7, 102.82, 18.3, 1277.23, 1731.47, 1776.4] + y-axis "Time (ns)" 0 --> 2254 + bar [31.99, 102.07, 18.04, 1303.32, 1821.5, 1877.85] ``` --- @@ -61,12 +61,12 @@ xychart-beta | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **TUnit.Mocks** | 29.95 ns | 0.312 ns | 0.277 ns | 200 B | -| Imposter | 158.48 ns | 1.580 ns | 1.401 ns | 696 B | -| Mockolate | 17.91 ns | 0.124 ns | 0.104 ns | 176 B | -| Moq | 1,287.34 ns | 15.628 ns | 12.201 ns | 1912 B | -| NSubstitute | 1,772.55 ns | 34.348 ns | 40.889 ns | 5000 B | -| FakeItEasy | 1,814.17 ns | 35.390 ns | 37.867 ns | 2715 B | +| **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 | ```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 --> 2178 - bar [29.95, 158.48, 17.91, 1287.34, 1772.55, 1814.17] + y-axis "Time (ns)" 0 --> 2172 + bar [30.44, 160.49, 19.24, 1239.96, 1766.64, 1809.19] ``` ## 🎯 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-16T03:22:07.543Z* +*Last generated: 2026-07-17T03:20:48.806Z* diff --git a/docs/docs/benchmarks/mocks/Setup.md b/docs/docs/benchmarks/mocks/Setup.md index 483623a7db..ecab0bf047 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-16** from the latest CI run. +This benchmark was automatically generated on **2026-07-17** 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** | 421.0 ns | 2.73 ns | 2.42 ns | 2.34 KB | -| Imposter | 633.6 ns | 11.88 ns | 11.12 ns | 6.12 KB | -| Mockolate | 254.6 ns | 3.91 ns | 3.66 ns | 1.41 KB | -| Moq | 238,313.8 ns | 994.18 ns | 830.19 ns | 28.56 KB | -| NSubstitute | 4,215.3 ns | 80.02 ns | 74.86 ns | 9.01 KB | -| FakeItEasy | 5,731.3 ns | 110.26 ns | 161.62 ns | 10.45 KB | +| **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 | ```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 --> 285977 - bar [421, 633.6, 254.6, 238313.8, 4215.3, 5731.3] + y-axis "Time (ns)" 0 --> 529335 + bar [567.8, 887, 340.3, 441111.8, 5866.6, 8591.2] ``` --- @@ -61,12 +61,12 @@ xychart-beta | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **TUnit.Mocks** | 635.2 ns | 7.98 ns | 7.46 ns | 3.15 KB | -| Imposter | 1,079.0 ns | 13.96 ns | 13.06 ns | 10.59 KB | -| Mockolate | 448.5 ns | 5.05 ns | 4.73 ns | 2.35 KB | -| Moq | 69,640.0 ns | 314.15 ns | 278.48 ns | 16.53 KB | -| NSubstitute | 9,148.3 ns | 93.15 ns | 87.13 ns | 20.31 KB | -| FakeItEasy | 5,581.4 ns | 53.89 ns | 50.41 ns | 11.71 KB | +| **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 | ```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 --> 83568 - bar [635.2, 1079, 448.5, 69640, 9148.3, 5581.4] + y-axis "Time (ns)" 0 --> 140498 + bar [818.1, 1489.2, 595.3, 117081.2, 12231.7, 7811.1] ``` ## 🎯 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-16T03:22:07.543Z* +*Last generated: 2026-07-17T03:20:48.806Z* diff --git a/docs/docs/benchmarks/mocks/Verification.md b/docs/docs/benchmarks/mocks/Verification.md index 00116153e5..6ec0f4b49b 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-16** from the latest CI run. +This benchmark was automatically generated on **2026-07-17** 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** | 765.52 ns | 15.180 ns | 14.200 ns | 3008 B | -| Imposter | 762.21 ns | 11.127 ns | 10.408 ns | 4688 B | -| Mockolate | 452.26 ns | 8.813 ns | 8.656 ns | 2128 B | -| Moq | 348,657.31 ns | 3,322.000 ns | 2,944.866 ns | 24325 B | -| NSubstitute | 6,630.49 ns | 33.134 ns | 29.372 ns | 10064 B | -| FakeItEasy | 7,724.77 ns | 85.834 ns | 76.089 ns | 10722 B | +| **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 | ```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 --> 418389 - bar [765.52, 762.21, 452.26, 348657.31, 6630.49, 7724.77] + y-axis "Time (ns)" 0 --> 422674 + bar [745.25, 707, 414.7, 352228.21, 6649.92, 7861.88] ``` --- @@ -61,12 +61,12 @@ xychart-beta | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **TUnit.Mocks** | 56.97 ns | 1.070 ns | 1.001 ns | 320 B | -| Imposter | 352.60 ns | 7.062 ns | 6.606 ns | 2400 B | -| Mockolate | 258.29 ns | 5.210 ns | 5.574 ns | 1144 B | -| Moq | 90,770.52 ns | 1,214.939 ns | 1,136.455 ns | 6918 B | -| NSubstitute | 3,939.88 ns | 39.475 ns | 34.994 ns | 7088 B | -| FakeItEasy | 3,848.23 ns | 76.703 ns | 67.996 ns | 5209 B | +| **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 | ```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 --> 108925 - bar [56.97, 352.6, 258.29, 90770.52, 3939.88, 3848.23] + y-axis "Time (ns)" 0 --> 106707 + bar [60.02, 388.59, 265, 88922.07, 3710.28, 3893.22] ``` --- @@ -102,12 +102,12 @@ xychart-beta | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **TUnit.Mocks** | 1,369.78 ns | 22.086 ns | 20.660 ns | 4472 B | -| Imposter | 1,946.82 ns | 33.126 ns | 30.986 ns | 11192 B | -| Mockolate | 1,224.99 ns | 24.039 ns | 32.904 ns | 5240 B | -| Moq | 481,850.05 ns | 1,620.866 ns | 1,353.496 ns | 34699 B | -| NSubstitute | 11,776.22 ns | 92.014 ns | 86.069 ns | 16929 B | -| FakeItEasy | 15,344.78 ns | 191.188 ns | 159.650 ns | 19458 B | +| **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 | ```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 --> 578221 - bar [1369.78, 1946.82, 1224.99, 481850.05, 11776.22, 15344.78] + y-axis "Time (ns)" 0 --> 570760 + bar [1385.2, 2005.28, 1187.08, 475632.96, 11960.08, 14727.81] ``` ## 🎯 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-16T03:22:07.543Z* +*Last generated: 2026-07-17T03:20:48.806Z* diff --git a/docs/docs/benchmarks/mocks/index.md b/docs/docs/benchmarks/mocks/index.md index 5992ad5e81..b2ff7195ef 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-16** from the latest CI run. +These benchmarks were automatically generated on **2026-07-17** from the latest CI run. **Environment:** Ubuntu Latest • .NET SDK 10.0.302 ::: @@ -66,7 +66,7 @@ This makes TUnit.Mocks compatible with **Native AOT** and **IL trimming**, while ### Source Code -All benchmark source code is available in the [TUnit repository](https://github.com/thomhurst/TUnit), under `benchmarks/TUnit.Mocks.Benchmarks`. +All benchmark source code is available in the [`TUnit.Mocks.Benchmarks`](https://github.com/thomhurst/TUnit/tree/main/benchmarks/TUnit.Mocks.Benchmarks) directory. --- @@ -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-16T03:22:07.543Z* +*Last generated: 2026-07-17T03:20:48.806Z* diff --git a/docs/static/benchmarks/mocks/Callback.json b/docs/static/benchmarks/mocks/Callback.json index d1836c98a3..5b39615339 100644 --- a/docs/static/benchmarks/mocks/Callback.json +++ b/docs/static/benchmarks/mocks/Callback.json @@ -1,5 +1,5 @@ { - "timestamp": "2026-07-16T03:22:07.543Z", + "timestamp": "2026-07-17T03:20:48.806Z", "category": "Callback", "description": "Callback registration and execution", "environment": { @@ -10,111 +10,111 @@ "results": [ { "Method": "TUnit.Mocks", - "Mean": "673.6 ns", - "Error": "1.86 ns", - "StdDev": "1.74 ns", + "Mean": "705.9 ns", + "Error": "12.13 ns", + "StdDev": "11.35 ns", "Gen0": "0.1898", "Gen1": "0.0019", "Allocated": "3.11 KB" }, { "Method": "Imposter", - "Mean": "462.0 ns", - "Error": "1.24 ns", - "StdDev": "1.10 ns", - "Gen0": "0.1626", - "Gen1": "0.0014", + "Mean": "495.0 ns", + "Error": "8.32 ns", + "StdDev": "7.79 ns", + "Gen0": "0.1621", + "Gen1": "0.0010", "Allocated": "2.66 KB" }, { "Method": "Mockolate", - "Mean": "336.4 ns", - "Error": "1.32 ns", - "StdDev": "1.17 ns", + "Mean": "374.5 ns", + "Error": "5.34 ns", + "StdDev": "5.00 ns", "Gen0": "0.1097", "Gen1": "0.0005", "Allocated": "1.8 KB" }, { "Method": "Moq", - "Mean": "136,059.2 ns", - "Error": "815.04 ns", - "StdDev": "680.59 ns", - "Gen0": "0.7324", - "Gen1": "0.4883", - "Allocated": "13.29 KB" + "Mean": "187,749.2 ns", + "Error": "636.52 ns", + "StdDev": "595.40 ns", + "Gen0": "0.4883", + "Gen1": "-", + "Allocated": "13.14 KB" }, { "Method": "NSubstitute", - "Mean": "4,227.0 ns", - "Error": "22.93 ns", - "StdDev": "20.33 ns", + "Mean": "4,849.4 ns", + "Error": "26.18 ns", + "StdDev": "24.49 ns", "Gen0": "0.4807", "Gen1": "0.0076", "Allocated": "7.85 KB" }, { "Method": "FakeItEasy", - "Mean": "4,509.0 ns", - "Error": "32.27 ns", - "StdDev": "28.60 ns", - "Gen0": "0.4272", - "Gen1": "0.0305", + "Mean": "5,577.3 ns", + "Error": "19.67 ns", + "StdDev": "17.44 ns", + "Gen0": "0.4501", + "Gen1": "0.0153", "Allocated": "7.44 KB" }, { "Method": "'TUnit.Mocks (with args)'", - "Mean": "766.9 ns", - "Error": "4.45 ns", - "StdDev": "4.16 ns", + "Mean": "846.5 ns", + "Error": "9.86 ns", + "StdDev": "9.22 ns", "Gen0": "0.1955", "Gen1": "0.0019", "Allocated": "3.2 KB" }, { "Method": "'Imposter (with args)'", - "Mean": "534.5 ns", - "Error": "1.43 ns", - "StdDev": "1.27 ns", + "Mean": "580.3 ns", + "Error": "5.58 ns", + "StdDev": "4.95 ns", "Gen0": "0.1726", "Gen1": "0.0010", "Allocated": "2.82 KB" }, { "Method": "'Mockolate (with args)'", - "Mean": "380.3 ns", - "Error": "1.78 ns", - "StdDev": "1.66 ns", + "Mean": "430.3 ns", + "Error": "6.02 ns", + "StdDev": "5.63 ns", "Gen0": "0.1125", "Gen1": "0.0005", "Allocated": "1.84 KB" }, { "Method": "'Moq (with args)'", - "Mean": "142,391.3 ns", - "Error": "1,023.46 ns", - "StdDev": "907.27 ns", + "Mean": "196,757.9 ns", + "Error": "723.51 ns", + "StdDev": "676.77 ns", "Gen0": "0.4883", "Gen1": "-", "Allocated": "13.73 KB" }, { "Method": "'NSubstitute (with args)'", - "Mean": "4,704.0 ns", - "Error": "13.07 ns", - "StdDev": "12.23 ns", - "Gen0": "0.5112", - "Gen1": "0.0076", + "Mean": "5,578.5 ns", + "Error": "28.29 ns", + "StdDev": "26.46 ns", + "Gen0": "0.4883", + "Gen1": "-", "Allocated": "8.41 KB" }, { "Method": "'FakeItEasy (with args)'", - "Mean": "5,804.3 ns", - "Error": "36.63 ns", - "StdDev": "34.26 ns", + "Mean": "6,904.4 ns", + "Error": "129.86 ns", + "StdDev": "121.47 ns", "Gen0": "0.5493", - "Gen1": "0.0305", - "Allocated": "9.26 KB" + "Gen1": "0.0610", + "Allocated": "9.4 KB" } ] } \ No newline at end of file diff --git a/docs/static/benchmarks/mocks/CombinedWorkflow.json b/docs/static/benchmarks/mocks/CombinedWorkflow.json index 9c0e6e4625..e34d2acc65 100644 --- a/docs/static/benchmarks/mocks/CombinedWorkflow.json +++ b/docs/static/benchmarks/mocks/CombinedWorkflow.json @@ -1,5 +1,5 @@ { - "timestamp": "2026-07-16T03:22:07.543Z", + "timestamp": "2026-07-17T03:20:48.806Z", "category": "CombinedWorkflow", "description": "Full workflow: create → setup → invoke → verify", "environment": { @@ -10,57 +10,57 @@ "results": [ { "Method": "TUnit.Mocks", - "Mean": "1.535 μs", - "Error": "0.0307 μs", - "StdDev": "0.0410 μs", - "Gen0": "0.0744", - "Gen1": "-", + "Mean": "2.119 μs", + "Error": "0.0188 μs", + "StdDev": "0.0167 μs", + "Gen0": "0.3777", + "Gen1": "0.0038", "Allocated": "6.23 KB" }, { "Method": "Imposter", - "Mean": "2.560 μs", - "Error": "0.0816 μs", - "StdDev": "0.2405 μs", - "Gen0": "0.1907", - "Gen1": "0.0076", + "Mean": "3.022 μs", + "Error": "0.0375 μs", + "StdDev": "0.0332 μs", + "Gen0": "0.9613", + "Gen1": "0.0458", "Allocated": "15.71 KB" }, { "Method": "Mockolate", - "Mean": "1.298 μs", - "Error": "0.0254 μs", - "StdDev": "0.0459 μs", - "Gen0": "0.0896", - "Gen1": "-", + "Mean": "1.865 μs", + "Error": "0.0201 μs", + "StdDev": "0.0188 μs", + "Gen0": "0.4501", + "Gen1": "0.0076", "Allocated": "7.36 KB" }, { "Method": "Moq", - "Mean": "145.691 μs", - "Error": "1.7890 μs", - "StdDev": "1.4939 μs", - "Gen0": "0.2441", - "Gen1": "-", - "Allocated": "36.36 KB" + "Mean": "411.688 μs", + "Error": "2.8362 μs", + "StdDev": "2.6530 μs", + "Gen0": "1.9531", + "Gen1": "0.9766", + "Allocated": "36.16 KB" }, { "Method": "NSubstitute", - "Mean": "13.383 μs", - "Error": "0.2510 μs", - "StdDev": "0.2465 μs", - "Gen0": "0.3204", - "Gen1": "-", + "Mean": "18.220 μs", + "Error": "0.1458 μs", + "StdDev": "0.1293 μs", + "Gen0": "1.6174", + "Gen1": "0.0305", "Allocated": "26.72 KB" }, { "Method": "FakeItEasy", - "Mean": "10.772 μs", - "Error": "0.2105 μs", - "StdDev": "0.2253 μs", - "Gen0": "0.3052", - "Gen1": "0.0153", - "Allocated": "25.51 KB" + "Mean": "19.560 μs", + "Error": "0.2402 μs", + "StdDev": "0.2247 μs", + "Gen0": "1.5564", + "Gen1": "0.0305", + "Allocated": "25.52 KB" } ] } \ No newline at end of file diff --git a/docs/static/benchmarks/mocks/Invocation.json b/docs/static/benchmarks/mocks/Invocation.json index efc27e36ff..b80e6e9db5 100644 --- a/docs/static/benchmarks/mocks/Invocation.json +++ b/docs/static/benchmarks/mocks/Invocation.json @@ -1,5 +1,5 @@ { - "timestamp": "2026-07-16T03:22:07.543Z", + "timestamp": "2026-07-17T03:20:48.806Z", "category": "Invocation", "description": "Calling methods on mock objects", "environment": { @@ -10,162 +10,162 @@ "results": [ { "Method": "TUnit.Mocks", - "Mean": "281.48 ns", - "Error": "79.32 ns", - "StdDev": "4.348 ns", + "Mean": "273.21 ns", + "Error": "54.95 ns", + "StdDev": "3.012 ns", "Gen0": "0.0067", "Gen1": "0.0062", "Allocated": "128 B" }, { "Method": "Imposter", - "Mean": "299.91 ns", - "Error": "60.08 ns", - "StdDev": "3.293 ns", + "Mean": "295.60 ns", + "Error": "64.58 ns", + "StdDev": "3.540 ns", "Gen0": "0.0100", "Gen1": "0.0095", "Allocated": "168 B" }, { "Method": "Mockolate", - "Mean": "107.51 ns", - "Error": "20.59 ns", - "StdDev": "1.129 ns", + "Mean": "116.27 ns", + "Error": "54.60 ns", + "StdDev": "2.993 ns", "Gen0": "0.0050", "Gen1": "0.0048", "Allocated": "84 B" }, { "Method": "Moq", - "Mean": "799.88 ns", - "Error": "81.14 ns", - "StdDev": "4.448 ns", + "Mean": "826.32 ns", + "Error": "428.39 ns", + "StdDev": "23.482 ns", "Gen0": "0.0219", "Gen1": "0.0210", "Allocated": "376 B" }, { "Method": "NSubstitute", - "Mean": "731.28 ns", - "Error": "73.30 ns", - "StdDev": "4.018 ns", + "Mean": "711.93 ns", + "Error": "117.66 ns", + "StdDev": "6.449 ns", "Gen0": "0.0172", "Gen1": "0.0162", "Allocated": "304 B" }, { "Method": "FakeItEasy", - "Mean": "1,735.17 ns", - "Error": "354.64 ns", - "StdDev": "19.439 ns", - "Gen0": "0.0553", - "Gen1": "0.0534", + "Mean": "1,688.72 ns", + "Error": "615.50 ns", + "StdDev": "33.738 ns", + "Gen0": "0.0534", + "Gen1": "0.0496", "Allocated": "944 B" }, { "Method": "'TUnit.Mocks (String)'", - "Mean": "174.93 ns", - "Error": "71.18 ns", - "StdDev": "3.902 ns", + "Mean": "167.79 ns", + "Error": "78.26 ns", + "StdDev": "4.290 ns", "Gen0": "0.0052", "Gen1": "0.0050", "Allocated": "96 B" }, { "Method": "'Imposter (String)'", - "Mean": "302.20 ns", - "Error": "100.49 ns", - "StdDev": "5.508 ns", + "Mean": "296.53 ns", + "Error": "25.92 ns", + "StdDev": "1.421 ns", "Gen0": "0.0100", "Gen1": "0.0095", "Allocated": "168 B" }, { "Method": "'Mockolate (String)'", - "Mean": "97.57 ns", - "Error": "11.39 ns", - "StdDev": "0.624 ns", + "Mean": "93.26 ns", + "Error": "21.15 ns", + "StdDev": "1.159 ns", "Gen0": "0.0036", "Gen1": "0.0035", "Allocated": "60 B" }, { "Method": "'Moq (String)'", - "Mean": "543.42 ns", - "Error": "47.08 ns", - "StdDev": "2.580 ns", + "Mean": "549.13 ns", + "Error": "106.61 ns", + "StdDev": "5.843 ns", "Gen0": "0.0172", "Gen1": "0.0162", "Allocated": "296 B" }, { "Method": "'NSubstitute (String)'", - "Mean": "598.20 ns", - "Error": "161.76 ns", - "StdDev": "8.867 ns", + "Mean": "636.74 ns", + "Error": "195.01 ns", + "StdDev": "10.689 ns", "Gen0": "0.0153", "Gen1": "0.0143", "Allocated": "272 B" }, { "Method": "'FakeItEasy (String)'", - "Mean": "1,560.51 ns", - "Error": "151.59 ns", - "StdDev": "8.309 ns", + "Mean": "1,580.87 ns", + "Error": "263.68 ns", + "StdDev": "14.453 ns", "Gen0": "0.0458", "Gen1": "0.0439", "Allocated": "776 B" }, { "Method": "'TUnit.Mocks (100 calls)'", - "Mean": "27,313.01 ns", - "Error": "13,098.03 ns", - "StdDev": "717.947 ns", + "Mean": "27,119.94 ns", + "Error": "11,658.13 ns", + "StdDev": "639.021 ns", "Gen0": "0.6409", "Gen1": "0.6104", "Allocated": "12736 B" }, { "Method": "'Imposter (100 calls)'", - "Mean": "29,713.79 ns", - "Error": "7,045.81 ns", - "StdDev": "386.205 ns", + "Mean": "28,877.92 ns", + "Error": "6,810.75 ns", + "StdDev": "373.320 ns", "Gen0": "0.9766", "Gen1": "0.9155", "Allocated": "16800 B" }, { "Method": "'Mockolate (100 calls)'", - "Mean": "10,720.10 ns", - "Error": "3,209.51 ns", - "StdDev": "175.924 ns", + "Mean": "10,425.92 ns", + "Error": "3,862.76 ns", + "StdDev": "211.731 ns", "Gen0": "0.4883", "Gen1": "0.4730", "Allocated": "8400 B" }, { "Method": "'Moq (100 calls)'", - "Mean": "78,900.23 ns", - "Error": "18,990.50 ns", - "StdDev": "1,040.933 ns", + "Mean": "80,932.02 ns", + "Error": "4,243.47 ns", + "StdDev": "232.599 ns", "Gen0": "2.1973", "Gen1": "2.0752", "Allocated": "37600 B" }, { "Method": "'NSubstitute (100 calls)'", - "Mean": "75,178.99 ns", - "Error": "10,934.37 ns", - "StdDev": "599.350 ns", - "Gen0": "1.9531", - "Gen1": "1.8311", - "Allocated": "36448 B" + "Mean": "70,858.46 ns", + "Error": "4,713.41 ns", + "StdDev": "258.358 ns", + "Gen0": "1.7090", + "Gen1": "1.5869", + "Allocated": "30848 B" }, { "Method": "'FakeItEasy (100 calls)'", - "Mean": "176,434.93 ns", - "Error": "74,355.66 ns", - "StdDev": "4,075.685 ns", + "Mean": "178,405.95 ns", + "Error": "6,746.21 ns", + "StdDev": "369.782 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 84721769ed..1fe52d0a60 100644 --- a/docs/static/benchmarks/mocks/MockCreation.json +++ b/docs/static/benchmarks/mocks/MockCreation.json @@ -1,5 +1,5 @@ { - "timestamp": "2026-07-16T03:22:07.543Z", + "timestamp": "2026-07-17T03:20:48.806Z", "category": "MockCreation", "description": "Mock instance creation performance", "environment": { @@ -10,9 +10,9 @@ "results": [ { "Method": "TUnit.Mocks", - "Mean": "29.70 ns", - "Error": "0.452 ns", - "StdDev": "0.400 ns", + "Mean": "31.99 ns", + "Error": "0.682 ns", + "StdDev": "0.700 ns", "Gen0": "0.0119", "Gen1": "-", "Gen2": "-", @@ -20,9 +20,9 @@ }, { "Method": "Imposter", - "Mean": "102.82 ns", - "Error": "0.692 ns", - "StdDev": "0.613 ns", + "Mean": "102.07 ns", + "Error": "0.742 ns", + "StdDev": "0.694 ns", "Gen0": "0.0262", "Gen1": "-", "Gen2": "-", @@ -30,9 +30,9 @@ }, { "Method": "Mockolate", - "Mean": "18.30 ns", - "Error": "0.178 ns", - "StdDev": "0.149 ns", + "Mean": "18.04 ns", + "Error": "0.170 ns", + "StdDev": "0.150 ns", "Gen0": "0.0095", "Gen1": "-", "Gen2": "-", @@ -40,9 +40,9 @@ }, { "Method": "Moq", - "Mean": "1,277.23 ns", - "Error": "21.202 ns", - "StdDev": "19.832 ns", + "Mean": "1,303.32 ns", + "Error": "25.278 ns", + "StdDev": "25.959 ns", "Gen0": "0.1221", "Gen1": "-", "Gen2": "-", @@ -50,9 +50,9 @@ }, { "Method": "NSubstitute", - "Mean": "1,731.47 ns", - "Error": "21.570 ns", - "StdDev": "20.176 ns", + "Mean": "1,821.50 ns", + "Error": "25.868 ns", + "StdDev": "22.931 ns", "Gen0": "0.2975", "Gen1": "0.0019", "Gen2": "-", @@ -60,9 +60,9 @@ }, { "Method": "FakeItEasy", - "Mean": "1,776.40 ns", - "Error": "34.686 ns", - "StdDev": "43.867 ns", + "Mean": "1,877.85 ns", + "Error": "34.474 ns", + "StdDev": "38.317 ns", "Gen0": "0.1602", "Gen1": "0.0038", "Gen2": "0.0019", @@ -70,9 +70,9 @@ }, { "Method": "'TUnit.Mocks (Repository)'", - "Mean": "29.95 ns", - "Error": "0.312 ns", - "StdDev": "0.277 ns", + "Mean": "30.44 ns", + "Error": "0.304 ns", + "StdDev": "0.269 ns", "Gen0": "0.0119", "Gen1": "-", "Gen2": "-", @@ -80,9 +80,9 @@ }, { "Method": "'Imposter (Repository)'", - "Mean": "158.48 ns", - "Error": "1.580 ns", - "StdDev": "1.401 ns", + "Mean": "160.49 ns", + "Error": "1.458 ns", + "StdDev": "1.293 ns", "Gen0": "0.0415", "Gen1": "-", "Gen2": "-", @@ -90,9 +90,9 @@ }, { "Method": "'Mockolate (Repository)'", - "Mean": "17.91 ns", - "Error": "0.124 ns", - "StdDev": "0.104 ns", + "Mean": "19.24 ns", + "Error": "0.270 ns", + "StdDev": "0.240 ns", "Gen0": "0.0105", "Gen1": "-", "Gen2": "-", @@ -100,9 +100,9 @@ }, { "Method": "'Moq (Repository)'", - "Mean": "1,287.34 ns", - "Error": "15.628 ns", - "StdDev": "12.201 ns", + "Mean": "1,239.96 ns", + "Error": "14.447 ns", + "StdDev": "13.514 ns", "Gen0": "0.1125", "Gen1": "-", "Gen2": "-", @@ -110,9 +110,9 @@ }, { "Method": "'NSubstitute (Repository)'", - "Mean": "1,772.55 ns", - "Error": "34.348 ns", - "StdDev": "40.889 ns", + "Mean": "1,766.64 ns", + "Error": "28.811 ns", + "StdDev": "32.023 ns", "Gen0": "0.2975", "Gen1": "0.0019", "Gen2": "-", @@ -120,9 +120,9 @@ }, { "Method": "'FakeItEasy (Repository)'", - "Mean": "1,814.17 ns", - "Error": "35.390 ns", - "StdDev": "37.867 ns", + "Mean": "1,809.19 ns", + "Error": "35.980 ns", + "StdDev": "82.670 ns", "Gen0": "0.1602", "Gen1": "0.0038", "Gen2": "0.0019", diff --git a/docs/static/benchmarks/mocks/Setup.json b/docs/static/benchmarks/mocks/Setup.json index fd230c2f96..c80630b4ec 100644 --- a/docs/static/benchmarks/mocks/Setup.json +++ b/docs/static/benchmarks/mocks/Setup.json @@ -1,5 +1,5 @@ { - "timestamp": "2026-07-16T03:22:07.543Z", + "timestamp": "2026-07-17T03:20:48.806Z", "category": "Setup", "description": "Mock behavior configuration (returns, matchers)", "environment": { @@ -10,110 +10,110 @@ "results": [ { "Method": "TUnit.Mocks", - "Mean": "421.0 ns", - "Error": "2.73 ns", - "StdDev": "2.42 ns", + "Mean": "567.8 ns", + "Error": "4.26 ns", + "StdDev": "3.78 ns", "Gen0": "0.1431", "Gen1": "0.0010", "Allocated": "2.34 KB" }, { "Method": "Imposter", - "Mean": "633.6 ns", - "Error": "11.88 ns", - "StdDev": "11.12 ns", + "Mean": "887.0 ns", + "Error": "12.93 ns", + "StdDev": "12.10 ns", "Gen0": "0.3738", "Gen1": "0.0076", "Allocated": "6.12 KB" }, { "Method": "Mockolate", - "Mean": "254.6 ns", - "Error": "3.91 ns", - "StdDev": "3.66 ns", + "Mean": "340.3 ns", + "Error": "3.38 ns", + "StdDev": "3.16 ns", "Gen0": "0.0863", "Gen1": "-", "Allocated": "1.41 KB" }, { "Method": "Moq", - "Mean": "238,313.8 ns", - "Error": "994.18 ns", - "StdDev": "830.19 ns", - "Gen0": "1.4648", - "Gen1": "0.9766", - "Allocated": "28.56 KB" + "Mean": "441,111.8 ns", + "Error": "1,703.21 ns", + "StdDev": "1,593.19 ns", + "Gen0": "0.9766", + "Gen1": "-", + "Allocated": "28.52 KB" }, { "Method": "NSubstitute", - "Mean": "4,215.3 ns", - "Error": "80.02 ns", - "StdDev": "74.86 ns", + "Mean": "5,866.6 ns", + "Error": "52.26 ns", + "StdDev": "48.88 ns", "Gen0": "0.5493", - "Gen1": "0.0076", - "Allocated": "9.01 KB" + "Gen1": "-", + "Allocated": "9.06 KB" }, { "Method": "FakeItEasy", - "Mean": "5,731.3 ns", - "Error": "110.26 ns", - "StdDev": "161.62 ns", + "Mean": "8,591.2 ns", + "Error": "57.71 ns", + "StdDev": "51.16 ns", "Gen0": "0.6256", "Gen1": "0.0153", "Allocated": "10.45 KB" }, { "Method": "'TUnit.Mocks (Multiple)'", - "Mean": "635.2 ns", - "Error": "7.98 ns", - "StdDev": "7.46 ns", + "Mean": "818.1 ns", + "Error": "5.65 ns", + "StdDev": "5.01 ns", "Gen0": "0.1926", "Gen1": "0.0019", "Allocated": "3.15 KB" }, { "Method": "'Imposter (Multiple)'", - "Mean": "1,079.0 ns", - "Error": "13.96 ns", - "StdDev": "13.06 ns", + "Mean": "1,489.2 ns", + "Error": "17.66 ns", + "StdDev": "16.52 ns", "Gen0": "0.6485", "Gen1": "0.0248", "Allocated": "10.59 KB" }, { "Method": "'Mockolate (Multiple)'", - "Mean": "448.5 ns", - "Error": "5.05 ns", - "StdDev": "4.73 ns", - "Gen0": "0.1435", + "Mean": "595.3 ns", + "Error": "4.99 ns", + "StdDev": "4.67 ns", + "Gen0": "0.1431", "Gen1": "0.0010", "Allocated": "2.35 KB" }, { "Method": "'Moq (Multiple)'", - "Mean": "69,640.0 ns", - "Error": "314.15 ns", - "StdDev": "278.48 ns", + "Mean": "117,081.2 ns", + "Error": "574.26 ns", + "StdDev": "509.07 ns", "Gen0": "0.9766", "Gen1": "0.7324", "Allocated": "16.53 KB" }, { "Method": "'NSubstitute (Multiple)'", - "Mean": "9,148.3 ns", - "Error": "93.15 ns", - "StdDev": "87.13 ns", + "Mean": "12,231.7 ns", + "Error": "58.14 ns", + "StdDev": "51.54 ns", "Gen0": "1.2207", "Gen1": "-", "Allocated": "20.31 KB" }, { "Method": "'FakeItEasy (Multiple)'", - "Mean": "5,581.4 ns", - "Error": "53.89 ns", - "StdDev": "50.41 ns", - "Gen0": "0.7019", - "Gen1": "0.0305", + "Mean": "7,811.1 ns", + "Error": "63.21 ns", + "StdDev": "56.04 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 3216f2fcb4..4ac6b79052 100644 --- a/docs/static/benchmarks/mocks/Verification.json +++ b/docs/static/benchmarks/mocks/Verification.json @@ -1,5 +1,5 @@ { - "timestamp": "2026-07-16T03:22:07.543Z", + "timestamp": "2026-07-17T03:20:48.806Z", "category": "Verification", "description": "Verifying mock method calls", "environment": { @@ -10,165 +10,165 @@ "results": [ { "Method": "TUnit.Mocks", - "Mean": "765.52 ns", - "Error": "15.180 ns", - "StdDev": "14.200 ns", + "Mean": "745.25 ns", + "Error": "11.338 ns", + "StdDev": "10.051 ns", "Gen0": "0.1793", "Gen1": "0.0010", "Allocated": "3008 B" }, { "Method": "Imposter", - "Mean": "762.21 ns", - "Error": "11.127 ns", - "StdDev": "10.408 ns", + "Mean": "707.00 ns", + "Error": "14.139 ns", + "StdDev": "31.034 ns", "Gen0": "0.2794", "Gen1": "0.0038", "Allocated": "4688 B" }, { "Method": "Mockolate", - "Mean": "452.26 ns", - "Error": "8.813 ns", - "StdDev": "8.656 ns", + "Mean": "414.70 ns", + "Error": "8.292 ns", + "StdDev": "11.070 ns", "Gen0": "0.1268", "Gen1": "0.0005", "Allocated": "2128 B" }, { "Method": "Moq", - "Mean": "348,657.31 ns", - "Error": "3,322.000 ns", - "StdDev": "2,944.866 ns", + "Mean": "352,228.21 ns", + "Error": "1,987.909 ns", + "StdDev": "1,762.230 ns", "Gen0": "0.9766", "Gen1": "-", "Allocated": "24325 B" }, { "Method": "NSubstitute", - "Mean": "6,630.49 ns", - "Error": "33.134 ns", - "StdDev": "29.372 ns", + "Mean": "6,649.92 ns", + "Error": "46.103 ns", + "StdDev": "40.869 ns", "Gen0": "0.5493", "Gen1": "-", "Allocated": "10064 B" }, { "Method": "FakeItEasy", - "Mean": "7,724.77 ns", - "Error": "85.834 ns", - "StdDev": "76.089 ns", + "Mean": "7,861.88 ns", + "Error": "57.637 ns", + "StdDev": "48.130 ns", "Gen0": "0.6409", "Gen1": "0.0153", "Allocated": "10722 B" }, { "Method": "'TUnit.Mocks (Never)'", - "Mean": "56.97 ns", - "Error": "1.070 ns", - "StdDev": "1.001 ns", + "Mean": "60.02 ns", + "Error": "1.165 ns", + "StdDev": "1.145 ns", "Gen0": "0.0191", "Gen1": "-", "Allocated": "320 B" }, { "Method": "'Imposter (Never)'", - "Mean": "352.60 ns", - "Error": "7.062 ns", - "StdDev": "6.606 ns", + "Mean": "388.59 ns", + "Error": "6.761 ns", + "StdDev": "6.324 ns", "Gen0": "0.1431", "Gen1": "0.0010", "Allocated": "2400 B" }, { "Method": "'Mockolate (Never)'", - "Mean": "258.29 ns", - "Error": "5.210 ns", - "StdDev": "5.574 ns", + "Mean": "265.00 ns", + "Error": "2.267 ns", + "StdDev": "2.010 ns", "Gen0": "0.0682", "Gen1": "-", "Allocated": "1144 B" }, { "Method": "'Moq (Never)'", - "Mean": "90,770.52 ns", - "Error": "1,214.939 ns", - "StdDev": "1,136.455 ns", + "Mean": "88,922.07 ns", + "Error": "232.271 ns", + "StdDev": "205.902 ns", "Gen0": "0.2441", "Gen1": "-", "Allocated": "6918 B" }, { "Method": "'NSubstitute (Never)'", - "Mean": "3,939.88 ns", - "Error": "39.475 ns", - "StdDev": "34.994 ns", - "Gen0": "0.4196", - "Gen1": "-", + "Mean": "3,710.28 ns", + "Error": "26.917 ns", + "StdDev": "25.178 ns", + "Gen0": "0.4234", + "Gen1": "0.0038", "Allocated": "7088 B" }, { "Method": "'FakeItEasy (Never)'", - "Mean": "3,848.23 ns", - "Error": "76.703 ns", - "StdDev": "67.996 ns", + "Mean": "3,893.22 ns", + "Error": "33.859 ns", + "StdDev": "31.672 ns", "Gen0": "0.3052", "Gen1": "0.0305", "Allocated": "5209 B" }, { "Method": "'TUnit.Mocks (Multiple)'", - "Mean": "1,369.78 ns", - "Error": "22.086 ns", - "StdDev": "20.660 ns", + "Mean": "1,385.20 ns", + "Error": "18.228 ns", + "StdDev": "17.050 ns", "Gen0": "0.2670", "Gen1": "0.0019", "Allocated": "4472 B" }, { "Method": "'Imposter (Multiple)'", - "Mean": "1,946.82 ns", - "Error": "33.126 ns", - "StdDev": "30.986 ns", + "Mean": "2,005.28 ns", + "Error": "24.760 ns", + "StdDev": "21.949 ns", "Gen0": "0.6676", - "Gen1": "0.0210", + "Gen1": "0.0191", "Allocated": "11192 B" }, { "Method": "'Mockolate (Multiple)'", - "Mean": "1,224.99 ns", - "Error": "24.039 ns", - "StdDev": "32.904 ns", + "Mean": "1,187.08 ns", + "Error": "23.685 ns", + "StdDev": "48.382 ns", "Gen0": "0.3128", "Gen1": "0.0038", "Allocated": "5240 B" }, { "Method": "'Moq (Multiple)'", - "Mean": "481,850.05 ns", - "Error": "1,620.866 ns", - "StdDev": "1,353.496 ns", + "Mean": "475,632.96 ns", + "Error": "3,960.335 ns", + "StdDev": "3,704.499 ns", "Gen0": "1.9531", "Gen1": "0.9766", "Allocated": "34699 B" }, { "Method": "'NSubstitute (Multiple)'", - "Mean": "11,776.22 ns", - "Error": "92.014 ns", - "StdDev": "86.069 ns", - "Gen0": "1.0071", + "Mean": "11,960.08 ns", + "Error": "66.488 ns", + "StdDev": "62.193 ns", + "Gen0": "0.9918", "Gen1": "0.0153", - "Allocated": "16929 B" + "Allocated": "16762 B" }, { "Method": "'FakeItEasy (Multiple)'", - "Mean": "15,344.78 ns", - "Error": "191.188 ns", - "StdDev": "159.650 ns", + "Mean": "14,727.81 ns", + "Error": "95.668 ns", + "StdDev": "89.488 ns", "Gen0": "1.0986", "Gen1": "-", - "Allocated": "19458 B" + "Allocated": "19457 B" } ] } \ No newline at end of file diff --git a/docs/static/benchmarks/mocks/latest.json b/docs/static/benchmarks/mocks/latest.json index f4babebbac..61db19c111 100644 --- a/docs/static/benchmarks/mocks/latest.json +++ b/docs/static/benchmarks/mocks/latest.json @@ -1,5 +1,5 @@ { - "timestamp": "2026-07-16T03:22:07.543Z", + "timestamp": "2026-07-17T03:20:48.806Z", "environment": { "benchmarkDotNetVersion": "BenchmarkDotNet v0.15.8, Linux Ubuntu 24.04.4 LTS (Noble Numbat)", "sdk": ".NET SDK 10.0.302", @@ -9,328 +9,328 @@ "Callback": [ { "Method": "TUnit.Mocks", - "Mean": "673.6 ns", - "Error": "1.86 ns", - "StdDev": "1.74 ns", + "Mean": "705.9 ns", + "Error": "12.13 ns", + "StdDev": "11.35 ns", "Gen0": "0.1898", "Gen1": "0.0019", "Allocated": "3.11 KB" }, { "Method": "Imposter", - "Mean": "462.0 ns", - "Error": "1.24 ns", - "StdDev": "1.10 ns", - "Gen0": "0.1626", - "Gen1": "0.0014", + "Mean": "495.0 ns", + "Error": "8.32 ns", + "StdDev": "7.79 ns", + "Gen0": "0.1621", + "Gen1": "0.0010", "Allocated": "2.66 KB" }, { "Method": "Mockolate", - "Mean": "336.4 ns", - "Error": "1.32 ns", - "StdDev": "1.17 ns", + "Mean": "374.5 ns", + "Error": "5.34 ns", + "StdDev": "5.00 ns", "Gen0": "0.1097", "Gen1": "0.0005", "Allocated": "1.8 KB" }, { "Method": "Moq", - "Mean": "136,059.2 ns", - "Error": "815.04 ns", - "StdDev": "680.59 ns", - "Gen0": "0.7324", - "Gen1": "0.4883", - "Allocated": "13.29 KB" + "Mean": "187,749.2 ns", + "Error": "636.52 ns", + "StdDev": "595.40 ns", + "Gen0": "0.4883", + "Gen1": "-", + "Allocated": "13.14 KB" }, { "Method": "NSubstitute", - "Mean": "4,227.0 ns", - "Error": "22.93 ns", - "StdDev": "20.33 ns", + "Mean": "4,849.4 ns", + "Error": "26.18 ns", + "StdDev": "24.49 ns", "Gen0": "0.4807", "Gen1": "0.0076", "Allocated": "7.85 KB" }, { "Method": "FakeItEasy", - "Mean": "4,509.0 ns", - "Error": "32.27 ns", - "StdDev": "28.60 ns", - "Gen0": "0.4272", - "Gen1": "0.0305", + "Mean": "5,577.3 ns", + "Error": "19.67 ns", + "StdDev": "17.44 ns", + "Gen0": "0.4501", + "Gen1": "0.0153", "Allocated": "7.44 KB" }, { "Method": "'TUnit.Mocks (with args)'", - "Mean": "766.9 ns", - "Error": "4.45 ns", - "StdDev": "4.16 ns", + "Mean": "846.5 ns", + "Error": "9.86 ns", + "StdDev": "9.22 ns", "Gen0": "0.1955", "Gen1": "0.0019", "Allocated": "3.2 KB" }, { "Method": "'Imposter (with args)'", - "Mean": "534.5 ns", - "Error": "1.43 ns", - "StdDev": "1.27 ns", + "Mean": "580.3 ns", + "Error": "5.58 ns", + "StdDev": "4.95 ns", "Gen0": "0.1726", "Gen1": "0.0010", "Allocated": "2.82 KB" }, { "Method": "'Mockolate (with args)'", - "Mean": "380.3 ns", - "Error": "1.78 ns", - "StdDev": "1.66 ns", + "Mean": "430.3 ns", + "Error": "6.02 ns", + "StdDev": "5.63 ns", "Gen0": "0.1125", "Gen1": "0.0005", "Allocated": "1.84 KB" }, { "Method": "'Moq (with args)'", - "Mean": "142,391.3 ns", - "Error": "1,023.46 ns", - "StdDev": "907.27 ns", + "Mean": "196,757.9 ns", + "Error": "723.51 ns", + "StdDev": "676.77 ns", "Gen0": "0.4883", "Gen1": "-", "Allocated": "13.73 KB" }, { "Method": "'NSubstitute (with args)'", - "Mean": "4,704.0 ns", - "Error": "13.07 ns", - "StdDev": "12.23 ns", - "Gen0": "0.5112", - "Gen1": "0.0076", + "Mean": "5,578.5 ns", + "Error": "28.29 ns", + "StdDev": "26.46 ns", + "Gen0": "0.4883", + "Gen1": "-", "Allocated": "8.41 KB" }, { "Method": "'FakeItEasy (with args)'", - "Mean": "5,804.3 ns", - "Error": "36.63 ns", - "StdDev": "34.26 ns", + "Mean": "6,904.4 ns", + "Error": "129.86 ns", + "StdDev": "121.47 ns", "Gen0": "0.5493", - "Gen1": "0.0305", - "Allocated": "9.26 KB" + "Gen1": "0.0610", + "Allocated": "9.4 KB" } ], "CombinedWorkflow": [ { "Method": "TUnit.Mocks", - "Mean": "1.535 μs", - "Error": "0.0307 μs", - "StdDev": "0.0410 μs", - "Gen0": "0.0744", - "Gen1": "-", + "Mean": "2.119 μs", + "Error": "0.0188 μs", + "StdDev": "0.0167 μs", + "Gen0": "0.3777", + "Gen1": "0.0038", "Allocated": "6.23 KB" }, { "Method": "Imposter", - "Mean": "2.560 μs", - "Error": "0.0816 μs", - "StdDev": "0.2405 μs", - "Gen0": "0.1907", - "Gen1": "0.0076", + "Mean": "3.022 μs", + "Error": "0.0375 μs", + "StdDev": "0.0332 μs", + "Gen0": "0.9613", + "Gen1": "0.0458", "Allocated": "15.71 KB" }, { "Method": "Mockolate", - "Mean": "1.298 μs", - "Error": "0.0254 μs", - "StdDev": "0.0459 μs", - "Gen0": "0.0896", - "Gen1": "-", + "Mean": "1.865 μs", + "Error": "0.0201 μs", + "StdDev": "0.0188 μs", + "Gen0": "0.4501", + "Gen1": "0.0076", "Allocated": "7.36 KB" }, { "Method": "Moq", - "Mean": "145.691 μs", - "Error": "1.7890 μs", - "StdDev": "1.4939 μs", - "Gen0": "0.2441", - "Gen1": "-", - "Allocated": "36.36 KB" + "Mean": "411.688 μs", + "Error": "2.8362 μs", + "StdDev": "2.6530 μs", + "Gen0": "1.9531", + "Gen1": "0.9766", + "Allocated": "36.16 KB" }, { "Method": "NSubstitute", - "Mean": "13.383 μs", - "Error": "0.2510 μs", - "StdDev": "0.2465 μs", - "Gen0": "0.3204", - "Gen1": "-", + "Mean": "18.220 μs", + "Error": "0.1458 μs", + "StdDev": "0.1293 μs", + "Gen0": "1.6174", + "Gen1": "0.0305", "Allocated": "26.72 KB" }, { "Method": "FakeItEasy", - "Mean": "10.772 μs", - "Error": "0.2105 μs", - "StdDev": "0.2253 μs", - "Gen0": "0.3052", - "Gen1": "0.0153", - "Allocated": "25.51 KB" + "Mean": "19.560 μs", + "Error": "0.2402 μs", + "StdDev": "0.2247 μs", + "Gen0": "1.5564", + "Gen1": "0.0305", + "Allocated": "25.52 KB" } ], "Invocation": [ { "Method": "TUnit.Mocks", - "Mean": "281.48 ns", - "Error": "79.32 ns", - "StdDev": "4.348 ns", + "Mean": "273.21 ns", + "Error": "54.95 ns", + "StdDev": "3.012 ns", "Gen0": "0.0067", "Gen1": "0.0062", "Allocated": "128 B" }, { "Method": "Imposter", - "Mean": "299.91 ns", - "Error": "60.08 ns", - "StdDev": "3.293 ns", + "Mean": "295.60 ns", + "Error": "64.58 ns", + "StdDev": "3.540 ns", "Gen0": "0.0100", "Gen1": "0.0095", "Allocated": "168 B" }, { "Method": "Mockolate", - "Mean": "107.51 ns", - "Error": "20.59 ns", - "StdDev": "1.129 ns", + "Mean": "116.27 ns", + "Error": "54.60 ns", + "StdDev": "2.993 ns", "Gen0": "0.0050", "Gen1": "0.0048", "Allocated": "84 B" }, { "Method": "Moq", - "Mean": "799.88 ns", - "Error": "81.14 ns", - "StdDev": "4.448 ns", + "Mean": "826.32 ns", + "Error": "428.39 ns", + "StdDev": "23.482 ns", "Gen0": "0.0219", "Gen1": "0.0210", "Allocated": "376 B" }, { "Method": "NSubstitute", - "Mean": "731.28 ns", - "Error": "73.30 ns", - "StdDev": "4.018 ns", + "Mean": "711.93 ns", + "Error": "117.66 ns", + "StdDev": "6.449 ns", "Gen0": "0.0172", "Gen1": "0.0162", "Allocated": "304 B" }, { "Method": "FakeItEasy", - "Mean": "1,735.17 ns", - "Error": "354.64 ns", - "StdDev": "19.439 ns", - "Gen0": "0.0553", - "Gen1": "0.0534", + "Mean": "1,688.72 ns", + "Error": "615.50 ns", + "StdDev": "33.738 ns", + "Gen0": "0.0534", + "Gen1": "0.0496", "Allocated": "944 B" }, { "Method": "'TUnit.Mocks (String)'", - "Mean": "174.93 ns", - "Error": "71.18 ns", - "StdDev": "3.902 ns", + "Mean": "167.79 ns", + "Error": "78.26 ns", + "StdDev": "4.290 ns", "Gen0": "0.0052", "Gen1": "0.0050", "Allocated": "96 B" }, { "Method": "'Imposter (String)'", - "Mean": "302.20 ns", - "Error": "100.49 ns", - "StdDev": "5.508 ns", + "Mean": "296.53 ns", + "Error": "25.92 ns", + "StdDev": "1.421 ns", "Gen0": "0.0100", "Gen1": "0.0095", "Allocated": "168 B" }, { "Method": "'Mockolate (String)'", - "Mean": "97.57 ns", - "Error": "11.39 ns", - "StdDev": "0.624 ns", + "Mean": "93.26 ns", + "Error": "21.15 ns", + "StdDev": "1.159 ns", "Gen0": "0.0036", "Gen1": "0.0035", "Allocated": "60 B" }, { "Method": "'Moq (String)'", - "Mean": "543.42 ns", - "Error": "47.08 ns", - "StdDev": "2.580 ns", + "Mean": "549.13 ns", + "Error": "106.61 ns", + "StdDev": "5.843 ns", "Gen0": "0.0172", "Gen1": "0.0162", "Allocated": "296 B" }, { "Method": "'NSubstitute (String)'", - "Mean": "598.20 ns", - "Error": "161.76 ns", - "StdDev": "8.867 ns", + "Mean": "636.74 ns", + "Error": "195.01 ns", + "StdDev": "10.689 ns", "Gen0": "0.0153", "Gen1": "0.0143", "Allocated": "272 B" }, { "Method": "'FakeItEasy (String)'", - "Mean": "1,560.51 ns", - "Error": "151.59 ns", - "StdDev": "8.309 ns", + "Mean": "1,580.87 ns", + "Error": "263.68 ns", + "StdDev": "14.453 ns", "Gen0": "0.0458", "Gen1": "0.0439", "Allocated": "776 B" }, { "Method": "'TUnit.Mocks (100 calls)'", - "Mean": "27,313.01 ns", - "Error": "13,098.03 ns", - "StdDev": "717.947 ns", + "Mean": "27,119.94 ns", + "Error": "11,658.13 ns", + "StdDev": "639.021 ns", "Gen0": "0.6409", "Gen1": "0.6104", "Allocated": "12736 B" }, { "Method": "'Imposter (100 calls)'", - "Mean": "29,713.79 ns", - "Error": "7,045.81 ns", - "StdDev": "386.205 ns", + "Mean": "28,877.92 ns", + "Error": "6,810.75 ns", + "StdDev": "373.320 ns", "Gen0": "0.9766", "Gen1": "0.9155", "Allocated": "16800 B" }, { "Method": "'Mockolate (100 calls)'", - "Mean": "10,720.10 ns", - "Error": "3,209.51 ns", - "StdDev": "175.924 ns", + "Mean": "10,425.92 ns", + "Error": "3,862.76 ns", + "StdDev": "211.731 ns", "Gen0": "0.4883", "Gen1": "0.4730", "Allocated": "8400 B" }, { "Method": "'Moq (100 calls)'", - "Mean": "78,900.23 ns", - "Error": "18,990.50 ns", - "StdDev": "1,040.933 ns", + "Mean": "80,932.02 ns", + "Error": "4,243.47 ns", + "StdDev": "232.599 ns", "Gen0": "2.1973", "Gen1": "2.0752", "Allocated": "37600 B" }, { "Method": "'NSubstitute (100 calls)'", - "Mean": "75,178.99 ns", - "Error": "10,934.37 ns", - "StdDev": "599.350 ns", - "Gen0": "1.9531", - "Gen1": "1.8311", - "Allocated": "36448 B" + "Mean": "70,858.46 ns", + "Error": "4,713.41 ns", + "StdDev": "258.358 ns", + "Gen0": "1.7090", + "Gen1": "1.5869", + "Allocated": "30848 B" }, { "Method": "'FakeItEasy (100 calls)'", - "Mean": "176,434.93 ns", - "Error": "74,355.66 ns", - "StdDev": "4,075.685 ns", + "Mean": "178,405.95 ns", + "Error": "6,746.21 ns", + "StdDev": "369.782 ns", "Gen0": "5.6152", "Gen1": "5.3711", "Allocated": "94400 B" @@ -339,9 +339,9 @@ "MockCreation": [ { "Method": "TUnit.Mocks", - "Mean": "29.70 ns", - "Error": "0.452 ns", - "StdDev": "0.400 ns", + "Mean": "31.99 ns", + "Error": "0.682 ns", + "StdDev": "0.700 ns", "Gen0": "0.0119", "Gen1": "-", "Gen2": "-", @@ -349,9 +349,9 @@ }, { "Method": "Imposter", - "Mean": "102.82 ns", - "Error": "0.692 ns", - "StdDev": "0.613 ns", + "Mean": "102.07 ns", + "Error": "0.742 ns", + "StdDev": "0.694 ns", "Gen0": "0.0262", "Gen1": "-", "Gen2": "-", @@ -359,9 +359,9 @@ }, { "Method": "Mockolate", - "Mean": "18.30 ns", - "Error": "0.178 ns", - "StdDev": "0.149 ns", + "Mean": "18.04 ns", + "Error": "0.170 ns", + "StdDev": "0.150 ns", "Gen0": "0.0095", "Gen1": "-", "Gen2": "-", @@ -369,9 +369,9 @@ }, { "Method": "Moq", - "Mean": "1,277.23 ns", - "Error": "21.202 ns", - "StdDev": "19.832 ns", + "Mean": "1,303.32 ns", + "Error": "25.278 ns", + "StdDev": "25.959 ns", "Gen0": "0.1221", "Gen1": "-", "Gen2": "-", @@ -379,9 +379,9 @@ }, { "Method": "NSubstitute", - "Mean": "1,731.47 ns", - "Error": "21.570 ns", - "StdDev": "20.176 ns", + "Mean": "1,821.50 ns", + "Error": "25.868 ns", + "StdDev": "22.931 ns", "Gen0": "0.2975", "Gen1": "0.0019", "Gen2": "-", @@ -389,9 +389,9 @@ }, { "Method": "FakeItEasy", - "Mean": "1,776.40 ns", - "Error": "34.686 ns", - "StdDev": "43.867 ns", + "Mean": "1,877.85 ns", + "Error": "34.474 ns", + "StdDev": "38.317 ns", "Gen0": "0.1602", "Gen1": "0.0038", "Gen2": "0.0019", @@ -399,9 +399,9 @@ }, { "Method": "'TUnit.Mocks (Repository)'", - "Mean": "29.95 ns", - "Error": "0.312 ns", - "StdDev": "0.277 ns", + "Mean": "30.44 ns", + "Error": "0.304 ns", + "StdDev": "0.269 ns", "Gen0": "0.0119", "Gen1": "-", "Gen2": "-", @@ -409,9 +409,9 @@ }, { "Method": "'Imposter (Repository)'", - "Mean": "158.48 ns", - "Error": "1.580 ns", - "StdDev": "1.401 ns", + "Mean": "160.49 ns", + "Error": "1.458 ns", + "StdDev": "1.293 ns", "Gen0": "0.0415", "Gen1": "-", "Gen2": "-", @@ -419,9 +419,9 @@ }, { "Method": "'Mockolate (Repository)'", - "Mean": "17.91 ns", - "Error": "0.124 ns", - "StdDev": "0.104 ns", + "Mean": "19.24 ns", + "Error": "0.270 ns", + "StdDev": "0.240 ns", "Gen0": "0.0105", "Gen1": "-", "Gen2": "-", @@ -429,9 +429,9 @@ }, { "Method": "'Moq (Repository)'", - "Mean": "1,287.34 ns", - "Error": "15.628 ns", - "StdDev": "12.201 ns", + "Mean": "1,239.96 ns", + "Error": "14.447 ns", + "StdDev": "13.514 ns", "Gen0": "0.1125", "Gen1": "-", "Gen2": "-", @@ -439,9 +439,9 @@ }, { "Method": "'NSubstitute (Repository)'", - "Mean": "1,772.55 ns", - "Error": "34.348 ns", - "StdDev": "40.889 ns", + "Mean": "1,766.64 ns", + "Error": "28.811 ns", + "StdDev": "32.023 ns", "Gen0": "0.2975", "Gen1": "0.0019", "Gen2": "-", @@ -449,9 +449,9 @@ }, { "Method": "'FakeItEasy (Repository)'", - "Mean": "1,814.17 ns", - "Error": "35.390 ns", - "StdDev": "37.867 ns", + "Mean": "1,809.19 ns", + "Error": "35.980 ns", + "StdDev": "82.670 ns", "Gen0": "0.1602", "Gen1": "0.0038", "Gen2": "0.0019", @@ -461,281 +461,281 @@ "Setup": [ { "Method": "TUnit.Mocks", - "Mean": "421.0 ns", - "Error": "2.73 ns", - "StdDev": "2.42 ns", + "Mean": "567.8 ns", + "Error": "4.26 ns", + "StdDev": "3.78 ns", "Gen0": "0.1431", "Gen1": "0.0010", "Allocated": "2.34 KB" }, { "Method": "Imposter", - "Mean": "633.6 ns", - "Error": "11.88 ns", - "StdDev": "11.12 ns", + "Mean": "887.0 ns", + "Error": "12.93 ns", + "StdDev": "12.10 ns", "Gen0": "0.3738", "Gen1": "0.0076", "Allocated": "6.12 KB" }, { "Method": "Mockolate", - "Mean": "254.6 ns", - "Error": "3.91 ns", - "StdDev": "3.66 ns", + "Mean": "340.3 ns", + "Error": "3.38 ns", + "StdDev": "3.16 ns", "Gen0": "0.0863", "Gen1": "-", "Allocated": "1.41 KB" }, { "Method": "Moq", - "Mean": "238,313.8 ns", - "Error": "994.18 ns", - "StdDev": "830.19 ns", - "Gen0": "1.4648", - "Gen1": "0.9766", - "Allocated": "28.56 KB" + "Mean": "441,111.8 ns", + "Error": "1,703.21 ns", + "StdDev": "1,593.19 ns", + "Gen0": "0.9766", + "Gen1": "-", + "Allocated": "28.52 KB" }, { "Method": "NSubstitute", - "Mean": "4,215.3 ns", - "Error": "80.02 ns", - "StdDev": "74.86 ns", + "Mean": "5,866.6 ns", + "Error": "52.26 ns", + "StdDev": "48.88 ns", "Gen0": "0.5493", - "Gen1": "0.0076", - "Allocated": "9.01 KB" + "Gen1": "-", + "Allocated": "9.06 KB" }, { "Method": "FakeItEasy", - "Mean": "5,731.3 ns", - "Error": "110.26 ns", - "StdDev": "161.62 ns", + "Mean": "8,591.2 ns", + "Error": "57.71 ns", + "StdDev": "51.16 ns", "Gen0": "0.6256", "Gen1": "0.0153", "Allocated": "10.45 KB" }, { "Method": "'TUnit.Mocks (Multiple)'", - "Mean": "635.2 ns", - "Error": "7.98 ns", - "StdDev": "7.46 ns", + "Mean": "818.1 ns", + "Error": "5.65 ns", + "StdDev": "5.01 ns", "Gen0": "0.1926", "Gen1": "0.0019", "Allocated": "3.15 KB" }, { "Method": "'Imposter (Multiple)'", - "Mean": "1,079.0 ns", - "Error": "13.96 ns", - "StdDev": "13.06 ns", + "Mean": "1,489.2 ns", + "Error": "17.66 ns", + "StdDev": "16.52 ns", "Gen0": "0.6485", "Gen1": "0.0248", "Allocated": "10.59 KB" }, { "Method": "'Mockolate (Multiple)'", - "Mean": "448.5 ns", - "Error": "5.05 ns", - "StdDev": "4.73 ns", - "Gen0": "0.1435", + "Mean": "595.3 ns", + "Error": "4.99 ns", + "StdDev": "4.67 ns", + "Gen0": "0.1431", "Gen1": "0.0010", "Allocated": "2.35 KB" }, { "Method": "'Moq (Multiple)'", - "Mean": "69,640.0 ns", - "Error": "314.15 ns", - "StdDev": "278.48 ns", + "Mean": "117,081.2 ns", + "Error": "574.26 ns", + "StdDev": "509.07 ns", "Gen0": "0.9766", "Gen1": "0.7324", "Allocated": "16.53 KB" }, { "Method": "'NSubstitute (Multiple)'", - "Mean": "9,148.3 ns", - "Error": "93.15 ns", - "StdDev": "87.13 ns", + "Mean": "12,231.7 ns", + "Error": "58.14 ns", + "StdDev": "51.54 ns", "Gen0": "1.2207", "Gen1": "-", "Allocated": "20.31 KB" }, { "Method": "'FakeItEasy (Multiple)'", - "Mean": "5,581.4 ns", - "Error": "53.89 ns", - "StdDev": "50.41 ns", - "Gen0": "0.7019", - "Gen1": "0.0305", + "Mean": "7,811.1 ns", + "Error": "63.21 ns", + "StdDev": "56.04 ns", + "Gen0": "0.6714", + "Gen1": "0.0610", "Allocated": "11.71 KB" } ], "Verification": [ { "Method": "TUnit.Mocks", - "Mean": "765.52 ns", - "Error": "15.180 ns", - "StdDev": "14.200 ns", + "Mean": "745.25 ns", + "Error": "11.338 ns", + "StdDev": "10.051 ns", "Gen0": "0.1793", "Gen1": "0.0010", "Allocated": "3008 B" }, { "Method": "Imposter", - "Mean": "762.21 ns", - "Error": "11.127 ns", - "StdDev": "10.408 ns", + "Mean": "707.00 ns", + "Error": "14.139 ns", + "StdDev": "31.034 ns", "Gen0": "0.2794", "Gen1": "0.0038", "Allocated": "4688 B" }, { "Method": "Mockolate", - "Mean": "452.26 ns", - "Error": "8.813 ns", - "StdDev": "8.656 ns", + "Mean": "414.70 ns", + "Error": "8.292 ns", + "StdDev": "11.070 ns", "Gen0": "0.1268", "Gen1": "0.0005", "Allocated": "2128 B" }, { "Method": "Moq", - "Mean": "348,657.31 ns", - "Error": "3,322.000 ns", - "StdDev": "2,944.866 ns", + "Mean": "352,228.21 ns", + "Error": "1,987.909 ns", + "StdDev": "1,762.230 ns", "Gen0": "0.9766", "Gen1": "-", "Allocated": "24325 B" }, { "Method": "NSubstitute", - "Mean": "6,630.49 ns", - "Error": "33.134 ns", - "StdDev": "29.372 ns", + "Mean": "6,649.92 ns", + "Error": "46.103 ns", + "StdDev": "40.869 ns", "Gen0": "0.5493", "Gen1": "-", "Allocated": "10064 B" }, { "Method": "FakeItEasy", - "Mean": "7,724.77 ns", - "Error": "85.834 ns", - "StdDev": "76.089 ns", + "Mean": "7,861.88 ns", + "Error": "57.637 ns", + "StdDev": "48.130 ns", "Gen0": "0.6409", "Gen1": "0.0153", "Allocated": "10722 B" }, { "Method": "'TUnit.Mocks (Never)'", - "Mean": "56.97 ns", - "Error": "1.070 ns", - "StdDev": "1.001 ns", + "Mean": "60.02 ns", + "Error": "1.165 ns", + "StdDev": "1.145 ns", "Gen0": "0.0191", "Gen1": "-", "Allocated": "320 B" }, { "Method": "'Imposter (Never)'", - "Mean": "352.60 ns", - "Error": "7.062 ns", - "StdDev": "6.606 ns", + "Mean": "388.59 ns", + "Error": "6.761 ns", + "StdDev": "6.324 ns", "Gen0": "0.1431", "Gen1": "0.0010", "Allocated": "2400 B" }, { "Method": "'Mockolate (Never)'", - "Mean": "258.29 ns", - "Error": "5.210 ns", - "StdDev": "5.574 ns", + "Mean": "265.00 ns", + "Error": "2.267 ns", + "StdDev": "2.010 ns", "Gen0": "0.0682", "Gen1": "-", "Allocated": "1144 B" }, { "Method": "'Moq (Never)'", - "Mean": "90,770.52 ns", - "Error": "1,214.939 ns", - "StdDev": "1,136.455 ns", + "Mean": "88,922.07 ns", + "Error": "232.271 ns", + "StdDev": "205.902 ns", "Gen0": "0.2441", "Gen1": "-", "Allocated": "6918 B" }, { "Method": "'NSubstitute (Never)'", - "Mean": "3,939.88 ns", - "Error": "39.475 ns", - "StdDev": "34.994 ns", - "Gen0": "0.4196", - "Gen1": "-", + "Mean": "3,710.28 ns", + "Error": "26.917 ns", + "StdDev": "25.178 ns", + "Gen0": "0.4234", + "Gen1": "0.0038", "Allocated": "7088 B" }, { "Method": "'FakeItEasy (Never)'", - "Mean": "3,848.23 ns", - "Error": "76.703 ns", - "StdDev": "67.996 ns", + "Mean": "3,893.22 ns", + "Error": "33.859 ns", + "StdDev": "31.672 ns", "Gen0": "0.3052", "Gen1": "0.0305", "Allocated": "5209 B" }, { "Method": "'TUnit.Mocks (Multiple)'", - "Mean": "1,369.78 ns", - "Error": "22.086 ns", - "StdDev": "20.660 ns", + "Mean": "1,385.20 ns", + "Error": "18.228 ns", + "StdDev": "17.050 ns", "Gen0": "0.2670", "Gen1": "0.0019", "Allocated": "4472 B" }, { "Method": "'Imposter (Multiple)'", - "Mean": "1,946.82 ns", - "Error": "33.126 ns", - "StdDev": "30.986 ns", + "Mean": "2,005.28 ns", + "Error": "24.760 ns", + "StdDev": "21.949 ns", "Gen0": "0.6676", - "Gen1": "0.0210", + "Gen1": "0.0191", "Allocated": "11192 B" }, { "Method": "'Mockolate (Multiple)'", - "Mean": "1,224.99 ns", - "Error": "24.039 ns", - "StdDev": "32.904 ns", + "Mean": "1,187.08 ns", + "Error": "23.685 ns", + "StdDev": "48.382 ns", "Gen0": "0.3128", "Gen1": "0.0038", "Allocated": "5240 B" }, { "Method": "'Moq (Multiple)'", - "Mean": "481,850.05 ns", - "Error": "1,620.866 ns", - "StdDev": "1,353.496 ns", + "Mean": "475,632.96 ns", + "Error": "3,960.335 ns", + "StdDev": "3,704.499 ns", "Gen0": "1.9531", "Gen1": "0.9766", "Allocated": "34699 B" }, { "Method": "'NSubstitute (Multiple)'", - "Mean": "11,776.22 ns", - "Error": "92.014 ns", - "StdDev": "86.069 ns", - "Gen0": "1.0071", + "Mean": "11,960.08 ns", + "Error": "66.488 ns", + "StdDev": "62.193 ns", + "Gen0": "0.9918", "Gen1": "0.0153", - "Allocated": "16929 B" + "Allocated": "16762 B" }, { "Method": "'FakeItEasy (Multiple)'", - "Mean": "15,344.78 ns", - "Error": "191.188 ns", - "StdDev": "159.650 ns", + "Mean": "14,727.81 ns", + "Error": "95.668 ns", + "StdDev": "89.488 ns", "Gen0": "1.0986", "Gen1": "-", - "Allocated": "19458 B" + "Allocated": "19457 B" } ] }, "stats": { "categoryCount": 6, "totalBenchmarks": 78, - "lastUpdated": "2026-07-16T03:22:07.543Z" + "lastUpdated": "2026-07-17T03:20:48.806Z" } } \ No newline at end of file diff --git a/docs/static/benchmarks/mocks/summary.json b/docs/static/benchmarks/mocks/summary.json index ee4e1cc813..8c771d8421 100644 --- a/docs/static/benchmarks/mocks/summary.json +++ b/docs/static/benchmarks/mocks/summary.json @@ -7,7 +7,7 @@ "Setup", "Verification" ], - "timestamp": "2026-07-16", + "timestamp": "2026-07-17", "environment": "Ubuntu Latest • .NET SDK 10.0.302", "libraries": [ "TUnit.Mocks",