diff --git a/docs/docs/benchmarks/mocks/Callback.md b/docs/docs/benchmarks/mocks/Callback.md index 1f28360619..0690567e36 100644 --- a/docs/docs/benchmarks/mocks/Callback.md +++ b/docs/docs/benchmarks/mocks/Callback.md @@ -7,7 +7,7 @@ sidebar_position: 2 # Callback Benchmark :::info Last Updated -This benchmark was automatically generated on **2026-05-23** from the latest CI run. +This benchmark was automatically generated on **2026-05-24** from the latest CI run. **Environment:** Ubuntu Latest • .NET SDK 10.0.300 ::: @@ -18,12 +18,12 @@ Callback registration and execution: | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **TUnit.Mocks** | 651.5 ns | 12.86 ns | 16.26 ns | 3.08 KB | -| Imposter | 462.3 ns | 2.34 ns | 2.19 ns | 2.66 KB | -| Mockolate | 343.5 ns | 1.08 ns | 1.01 ns | 1.91 KB | -| Moq | 134,795.9 ns | 610.17 ns | 509.52 ns | 13.29 KB | -| NSubstitute | 4,047.0 ns | 9.55 ns | 8.93 ns | 7.93 KB | -| FakeItEasy | 4,525.1 ns | 21.74 ns | 20.33 ns | 7.44 KB | +| **TUnit.Mocks** | 633.0 ns | 2.74 ns | 2.56 ns | 3.08 KB | +| Imposter | 452.0 ns | 1.11 ns | 0.98 ns | 2.66 KB | +| Mockolate | 334.6 ns | 0.63 ns | 0.53 ns | 1.91 KB | +| Moq | 182,032.9 ns | 888.87 ns | 742.25 ns | 13.14 KB | +| NSubstitute | 4,305.4 ns | 9.83 ns | 9.20 ns | 7.93 KB | +| FakeItEasy | 5,155.0 ns | 11.96 ns | 11.19 ns | 7.44 KB | ```mermaid %%{init: { @@ -49,8 +49,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 --> 161756 - bar [651.5, 462.3, 343.5, 134795.9, 4047, 4525.1] + y-axis "Time (ns)" 0 --> 218440 + bar [633, 452, 334.6, 182032.9, 4305.4, 5155] ``` --- @@ -59,12 +59,12 @@ xychart-beta | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **TUnit.Mocks** | 741.8 ns | 2.25 ns | 2.10 ns | 3.16 KB | -| Imposter | 534.9 ns | 1.78 ns | 1.58 ns | 2.82 KB | -| Mockolate | 388.1 ns | 0.78 ns | 0.69 ns | 1.95 KB | -| Moq | 142,841.2 ns | 729.74 ns | 609.37 ns | 13.73 KB | -| NSubstitute | 4,551.8 ns | 19.29 ns | 18.04 ns | 8.53 KB | -| FakeItEasy | 5,486.4 ns | 52.11 ns | 46.20 ns | 9.26 KB | +| **TUnit.Mocks** | 776.8 ns | 1.61 ns | 1.43 ns | 3.16 KB | +| Imposter | 505.8 ns | 1.29 ns | 1.08 ns | 2.82 KB | +| Mockolate | 393.9 ns | 1.09 ns | 0.97 ns | 1.95 KB | +| Moq | 192,734.1 ns | 1,236.70 ns | 1,096.30 ns | 13.73 KB | +| NSubstitute | 4,978.4 ns | 27.90 ns | 26.10 ns | 8.53 KB | +| FakeItEasy | 6,121.0 ns | 66.10 ns | 55.20 ns | 9.26 KB | ```mermaid %%{init: { @@ -90,8 +90,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 --> 171410 - bar [741.8, 534.9, 388.1, 142841.2, 4551.8, 5486.4] + y-axis "Time (ns)" 0 --> 231281 + bar [776.8, 505.8, 393.9, 192734.1, 4978.4, 6121] ``` ## 🎯 Key Insights @@ -104,4 +104,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-05-23T03:25:20.859Z* +*Last generated: 2026-05-24T03:32:03.972Z* diff --git a/docs/docs/benchmarks/mocks/CombinedWorkflow.md b/docs/docs/benchmarks/mocks/CombinedWorkflow.md index 529cdfe2ff..61c9911632 100644 --- a/docs/docs/benchmarks/mocks/CombinedWorkflow.md +++ b/docs/docs/benchmarks/mocks/CombinedWorkflow.md @@ -7,7 +7,7 @@ sidebar_position: 3 # CombinedWorkflow Benchmark :::info Last Updated -This benchmark was automatically generated on **2026-05-23** from the latest CI run. +This benchmark was automatically generated on **2026-05-24** from the latest CI run. **Environment:** Ubuntu Latest • .NET SDK 10.0.300 ::: @@ -18,12 +18,12 @@ Full workflow: create → setup → invoke → verify: | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **TUnit.Mocks** | 1.750 μs | 0.0055 μs | 0.0051 μs | 6.11 KB | -| Imposter | 2.452 μs | 0.0037 μs | 0.0033 μs | 15.71 KB | -| Mockolate | 1.657 μs | 0.0034 μs | 0.0030 μs | 7.63 KB | -| Moq | 400.648 μs | 1.4360 μs | 1.1991 μs | 36.16 KB | -| NSubstitute | 16.740 μs | 0.0750 μs | 0.0702 μs | 26.72 KB | -| FakeItEasy | 17.840 μs | 0.0865 μs | 0.0767 μs | 25.52 KB | +| **TUnit.Mocks** | 2.024 μs | 0.0169 μs | 0.0158 μs | 6.11 KB | +| Imposter | 2.960 μs | 0.0348 μs | 0.0308 μs | 15.71 KB | +| Mockolate | 1.855 μs | 0.0151 μs | 0.0141 μs | 7.63 KB | +| Moq | 312.804 μs | 1.2387 μs | 1.0344 μs | 36.4 KB | +| NSubstitute | 17.013 μs | 0.1191 μs | 0.1055 μs | 26.72 KB | +| FakeItEasy | 17.683 μs | 0.0731 μs | 0.0648 μs | 25.5 KB | ```mermaid %%{init: { @@ -49,8 +49,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 --> 481 - bar [1.75, 2.452, 1.657, 400.648, 16.74, 17.84] + y-axis "Time (μs)" 0 --> 376 + bar [2.024, 2.96, 1.855, 312.804, 17.013, 17.683] ``` ## 🎯 Key Insights @@ -63,4 +63,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-05-23T03:25:20.859Z* +*Last generated: 2026-05-24T03:32:03.972Z* diff --git a/docs/docs/benchmarks/mocks/Invocation.md b/docs/docs/benchmarks/mocks/Invocation.md index 46db727fad..e4ead193e7 100644 --- a/docs/docs/benchmarks/mocks/Invocation.md +++ b/docs/docs/benchmarks/mocks/Invocation.md @@ -7,7 +7,7 @@ sidebar_position: 4 # Invocation Benchmark :::info Last Updated -This benchmark was automatically generated on **2026-05-23** from the latest CI run. +This benchmark was automatically generated on **2026-05-24** from the latest CI run. **Environment:** Ubuntu Latest • .NET SDK 10.0.300 ::: @@ -18,12 +18,12 @@ Calling methods on mock objects: | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **TUnit.Mocks** | 267.09 ns | 70.93 ns | 3.888 ns | 120 B | -| Imposter | 303.44 ns | 45.40 ns | 2.488 ns | 168 B | -| Mockolate | 125.19 ns | 47.60 ns | 2.609 ns | 84 B | -| Moq | 854.16 ns | 184.84 ns | 10.132 ns | 376 B | -| NSubstitute | 773.80 ns | 253.15 ns | 13.876 ns | 304 B | -| FakeItEasy | 1,683.09 ns | 403.74 ns | 22.130 ns | 944 B | +| **TUnit.Mocks** | 264.60 ns | 62.12 ns | 3.405 ns | 120 B | +| Imposter | 302.39 ns | 128.94 ns | 7.068 ns | 168 B | +| Mockolate | 106.91 ns | 31.71 ns | 1.738 ns | 84 B | +| Moq | 787.59 ns | 95.99 ns | 5.262 ns | 376 B | +| NSubstitute | 714.86 ns | 313.36 ns | 17.176 ns | 304 B | +| FakeItEasy | 1,779.38 ns | 171.21 ns | 9.385 ns | 944 B | ```mermaid %%{init: { @@ -49,8 +49,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 --> 2020 - bar [267.09, 303.44, 125.19, 854.16, 773.8, 1683.09] + y-axis "Time (ns)" 0 --> 2136 + bar [264.6, 302.39, 106.91, 787.59, 714.86, 1779.38] ``` --- @@ -59,12 +59,12 @@ xychart-beta | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **TUnit.Mocks** | 160.09 ns | 81.23 ns | 4.452 ns | 88 B | -| Imposter | 298.88 ns | 118.33 ns | 6.486 ns | 168 B | -| Mockolate | 96.36 ns | 63.67 ns | 3.490 ns | 60 B | -| Moq | 560.00 ns | 77.13 ns | 4.228 ns | 296 B | -| NSubstitute | 645.05 ns | 323.77 ns | 17.747 ns | 272 B | -| FakeItEasy | 1,593.08 ns | 601.17 ns | 32.952 ns | 776 B | +| **TUnit.Mocks** | 166.12 ns | 58.97 ns | 3.232 ns | 88 B | +| Imposter | 299.08 ns | 64.40 ns | 3.530 ns | 168 B | +| Mockolate | 99.58 ns | 23.72 ns | 1.300 ns | 60 B | +| Moq | 539.76 ns | 209.98 ns | 11.510 ns | 296 B | +| NSubstitute | 616.67 ns | 160.41 ns | 8.793 ns | 272 B | +| FakeItEasy | 1,587.78 ns | 589.96 ns | 32.338 ns | 776 B | ```mermaid %%{init: { @@ -90,8 +90,8 @@ xychart-beta xychart-beta title "Invocation (String) Performance Comparison" x-axis ["TUnit.Mocks", "Imposter", "Mockolate", "Moq", "NSubstitute", "FakeItEasy"] - y-axis "Time (ns)" 0 --> 1912 - bar [160.09, 298.88, 96.36, 560, 645.05, 1593.08] + y-axis "Time (ns)" 0 --> 1906 + bar [166.12, 299.08, 99.58, 539.76, 616.67, 1587.78] ``` --- @@ -100,12 +100,12 @@ xychart-beta | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **TUnit.Mocks** | 26,385.27 ns | 13,318.32 ns | 730.022 ns | 11936 B | -| Imposter | 29,093.10 ns | 5,316.61 ns | 291.421 ns | 16800 B | -| Mockolate | 10,208.56 ns | 3,017.63 ns | 165.407 ns | 8400 B | -| Moq | 76,309.33 ns | 20,951.72 ns | 1,148.434 ns | 37600 B | -| NSubstitute | 69,871.25 ns | 20,163.48 ns | 1,105.229 ns | 30848 B | -| FakeItEasy | 172,156.28 ns | 70,904.67 ns | 3,886.524 ns | 94400 B | +| **TUnit.Mocks** | 27,403.83 ns | 12,255.55 ns | 671.768 ns | 11936 B | +| Imposter | 29,480.58 ns | 8,518.10 ns | 466.906 ns | 16800 B | +| Mockolate | 10,810.59 ns | 4,843.38 ns | 265.482 ns | 8400 B | +| Moq | 76,844.63 ns | 6,022.98 ns | 330.140 ns | 37600 B | +| NSubstitute | 70,881.18 ns | 33,128.57 ns | 1,815.889 ns | 30848 B | +| FakeItEasy | 174,040.90 ns | 62,358.93 ns | 3,418.103 ns | 94400 B | ```mermaid %%{init: { @@ -131,8 +131,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 --> 206588 - bar [26385.27, 29093.1, 10208.56, 76309.33, 69871.25, 172156.28] + y-axis "Time (ns)" 0 --> 208850 + bar [27403.83, 29480.58, 10810.59, 76844.63, 70881.18, 174040.9] ``` ## 🎯 Key Insights @@ -145,4 +145,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-05-23T03:25:20.859Z* +*Last generated: 2026-05-24T03:32:03.972Z* diff --git a/docs/docs/benchmarks/mocks/MockCreation.md b/docs/docs/benchmarks/mocks/MockCreation.md index c6bc039d52..bc9a468e67 100644 --- a/docs/docs/benchmarks/mocks/MockCreation.md +++ b/docs/docs/benchmarks/mocks/MockCreation.md @@ -7,7 +7,7 @@ sidebar_position: 5 # MockCreation Benchmark :::info Last Updated -This benchmark was automatically generated on **2026-05-23** from the latest CI run. +This benchmark was automatically generated on **2026-05-24** from the latest CI run. **Environment:** Ubuntu Latest • .NET SDK 10.0.300 ::: @@ -18,12 +18,12 @@ Mock instance creation performance: | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **TUnit.Mocks** | 25.67 ns | 0.554 ns | 0.616 ns | 192 B | -| Imposter | 91.97 ns | 1.890 ns | 2.587 ns | 440 B | -| Mockolate | 61.38 ns | 1.273 ns | 1.191 ns | 424 B | -| Moq | 1,332.99 ns | 24.495 ns | 22.912 ns | 2048 B | -| NSubstitute | 1,963.28 ns | 33.207 ns | 31.062 ns | 5000 B | -| FakeItEasy | 1,782.54 ns | 21.824 ns | 17.039 ns | 2715 B | +| **TUnit.Mocks** | 27.86 ns | 0.627 ns | 0.671 ns | 192 B | +| Imposter | 99.60 ns | 1.970 ns | 1.935 ns | 440 B | +| Mockolate | 66.16 ns | 1.357 ns | 2.482 ns | 424 B | +| Moq | 1,259.41 ns | 25.169 ns | 37.672 ns | 2048 B | +| NSubstitute | 1,665.13 ns | 11.360 ns | 10.626 ns | 5000 B | +| FakeItEasy | 1,676.09 ns | 22.320 ns | 20.878 ns | 2723 B | ```mermaid %%{init: { @@ -49,8 +49,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 --> 2356 - bar [25.67, 91.97, 61.38, 1332.99, 1963.28, 1782.54] + y-axis "Time (ns)" 0 --> 2012 + bar [27.86, 99.6, 66.16, 1259.41, 1665.13, 1676.09] ``` --- @@ -59,12 +59,12 @@ xychart-beta | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **TUnit.Mocks** | 27.37 ns | 0.612 ns | 1.393 ns | 192 B | -| Imposter | 141.79 ns | 1.939 ns | 1.813 ns | 696 B | -| Mockolate | 60.47 ns | 1.266 ns | 2.250 ns | 456 B | -| Moq | 1,324.35 ns | 11.422 ns | 10.684 ns | 1912 B | -| NSubstitute | 1,944.78 ns | 24.254 ns | 22.687 ns | 5000 B | -| FakeItEasy | 1,856.80 ns | 36.803 ns | 39.379 ns | 2715 B | +| **TUnit.Mocks** | 28.28 ns | 0.624 ns | 0.613 ns | 192 B | +| Imposter | 158.23 ns | 3.265 ns | 3.207 ns | 696 B | +| Mockolate | 69.77 ns | 1.462 ns | 3.179 ns | 456 B | +| Moq | 1,311.94 ns | 5.691 ns | 5.323 ns | 1912 B | +| NSubstitute | 1,997.01 ns | 21.249 ns | 18.837 ns | 5000 B | +| FakeItEasy | 1,594.46 ns | 16.828 ns | 15.741 ns | 2723 B | ```mermaid %%{init: { @@ -90,8 +90,8 @@ xychart-beta xychart-beta title "MockCreation (Repository) Performance Comparison" x-axis ["TUnit.Mocks", "Imposter", "Mockolate", "Moq", "NSubstitute", "FakeItEasy"] - y-axis "Time (ns)" 0 --> 2334 - bar [27.37, 141.79, 60.47, 1324.35, 1944.78, 1856.8] + y-axis "Time (ns)" 0 --> 2397 + bar [28.28, 158.23, 69.77, 1311.94, 1997.01, 1594.46] ``` ## 🎯 Key Insights @@ -104,4 +104,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-05-23T03:25:20.859Z* +*Last generated: 2026-05-24T03:32:03.972Z* diff --git a/docs/docs/benchmarks/mocks/Setup.md b/docs/docs/benchmarks/mocks/Setup.md index 6129a490f7..af83b8fb2c 100644 --- a/docs/docs/benchmarks/mocks/Setup.md +++ b/docs/docs/benchmarks/mocks/Setup.md @@ -7,7 +7,7 @@ sidebar_position: 6 # Setup Benchmark :::info Last Updated -This benchmark was automatically generated on **2026-05-23** from the latest CI run. +This benchmark was automatically generated on **2026-05-24** from the latest CI run. **Environment:** Ubuntu Latest • .NET SDK 10.0.300 ::: @@ -18,12 +18,12 @@ Mock behavior configuration (returns, matchers): | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **TUnit.Mocks** | 505.5 ns | 3.56 ns | 3.33 ns | 2.31 KB | -| Imposter | 766.9 ns | 4.68 ns | 3.91 ns | 6.12 KB | -| Mockolate | 322.4 ns | 1.49 ns | 1.17 ns | 1.65 KB | -| Moq | 425,511.3 ns | 1,122.34 ns | 937.21 ns | 28.55 KB | -| NSubstitute | 5,529.3 ns | 31.18 ns | 27.64 ns | 9.01 KB | -| FakeItEasy | 8,191.7 ns | 68.75 ns | 64.31 ns | 10.45 KB | +| **TUnit.Mocks** | 540.2 ns | 4.95 ns | 4.63 ns | 2.31 KB | +| Imposter | 757.1 ns | 6.71 ns | 5.95 ns | 6.12 KB | +| Mockolate | 359.1 ns | 2.25 ns | 1.99 ns | 1.65 KB | +| Moq | 298,446.7 ns | 1,554.11 ns | 1,213.35 ns | 28.52 KB | +| NSubstitute | 5,228.7 ns | 54.83 ns | 51.29 ns | 9.06 KB | +| FakeItEasy | 7,010.2 ns | 47.72 ns | 39.85 ns | 10.45 KB | ```mermaid %%{init: { @@ -49,8 +49,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 --> 510614 - bar [505.5, 766.9, 322.4, 425511.3, 5529.3, 8191.7] + y-axis "Time (ns)" 0 --> 358137 + bar [540.2, 757.1, 359.1, 298446.7, 5228.7, 7010.2] ``` --- @@ -59,12 +59,12 @@ xychart-beta | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **TUnit.Mocks** | 740.6 ns | 3.25 ns | 3.04 ns | 3.09 KB | -| Imposter | 1,331.4 ns | 26.31 ns | 28.15 ns | 10.59 KB | -| Mockolate | 539.6 ns | 2.38 ns | 2.11 ns | 2.6 KB | -| Moq | 113,475.6 ns | 327.66 ns | 273.61 ns | 16.53 KB | -| NSubstitute | 11,943.4 ns | 153.18 ns | 135.79 ns | 20.31 KB | -| FakeItEasy | 8,207.8 ns | 149.09 ns | 139.46 ns | 11.71 KB | +| **TUnit.Mocks** | 783.3 ns | 6.99 ns | 6.19 ns | 3.09 KB | +| Imposter | 1,406.8 ns | 20.76 ns | 18.40 ns | 10.59 KB | +| Mockolate | 577.8 ns | 3.66 ns | 3.06 ns | 2.6 KB | +| Moq | 88,527.5 ns | 1,290.13 ns | 1,206.79 ns | 16.53 KB | +| NSubstitute | 10,702.7 ns | 64.66 ns | 57.32 ns | 20.31 KB | +| FakeItEasy | 6,901.6 ns | 112.81 ns | 105.52 ns | 11.71 KB | ```mermaid %%{init: { @@ -90,8 +90,8 @@ xychart-beta xychart-beta title "Setup (Multiple) Performance Comparison" x-axis ["TUnit.Mocks", "Imposter", "Mockolate", "Moq", "NSubstitute", "FakeItEasy"] - y-axis "Time (ns)" 0 --> 136171 - bar [740.6, 1331.4, 539.6, 113475.6, 11943.4, 8207.8] + y-axis "Time (ns)" 0 --> 106233 + bar [783.3, 1406.8, 577.8, 88527.5, 10702.7, 6901.6] ``` ## 🎯 Key Insights @@ -104,4 +104,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-05-23T03:25:20.859Z* +*Last generated: 2026-05-24T03:32:03.972Z* diff --git a/docs/docs/benchmarks/mocks/Verification.md b/docs/docs/benchmarks/mocks/Verification.md index 92af8e8aa4..385e9e67c8 100644 --- a/docs/docs/benchmarks/mocks/Verification.md +++ b/docs/docs/benchmarks/mocks/Verification.md @@ -7,7 +7,7 @@ sidebar_position: 7 # Verification Benchmark :::info Last Updated -This benchmark was automatically generated on **2026-05-23** from the latest CI run. +This benchmark was automatically generated on **2026-05-24** from the latest CI run. **Environment:** Ubuntu Latest • .NET SDK 10.0.300 ::: @@ -18,12 +18,12 @@ Verifying mock method calls: | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **TUnit.Mocks** | 748.50 ns | 8.762 ns | 8.196 ns | 2968 B | -| Imposter | 697.96 ns | 8.708 ns | 8.145 ns | 4688 B | -| Mockolate | 409.36 ns | 4.167 ns | 3.898 ns | 2240 B | -| Moq | 244,163.13 ns | 1,858.746 ns | 1,738.672 ns | 24324 B | -| NSubstitute | 5,962.74 ns | 84.536 ns | 79.075 ns | 10064 B | -| FakeItEasy | 6,663.36 ns | 115.716 ns | 108.241 ns | 10722 B | +| **TUnit.Mocks** | 733.68 ns | 13.840 ns | 12.946 ns | 2968 B | +| Imposter | 693.60 ns | 9.312 ns | 8.710 ns | 4688 B | +| Mockolate | 409.47 ns | 5.374 ns | 5.027 ns | 2240 B | +| Moq | 346,315.18 ns | 1,744.817 ns | 1,457.001 ns | 24325 B | +| NSubstitute | 6,314.81 ns | 124.442 ns | 116.403 ns | 10064 B | +| FakeItEasy | 7,314.49 ns | 126.101 ns | 111.785 ns | 10722 B | ```mermaid %%{init: { @@ -49,8 +49,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 --> 292996 - bar [748.5, 697.96, 409.36, 244163.13, 5962.74, 6663.36] + y-axis "Time (ns)" 0 --> 415579 + bar [733.68, 693.6, 409.47, 346315.18, 6314.81, 7314.49] ``` --- @@ -59,12 +59,12 @@ xychart-beta | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **TUnit.Mocks** | 52.69 ns | 0.430 ns | 0.402 ns | 304 B | -| Imposter | 330.54 ns | 6.382 ns | 5.658 ns | 2400 B | -| Mockolate | 246.75 ns | 2.633 ns | 2.463 ns | 1240 B | -| Moq | 63,093.83 ns | 340.587 ns | 284.406 ns | 6925 B | -| NSubstitute | 3,480.90 ns | 61.830 ns | 54.810 ns | 7088 B | -| FakeItEasy | 3,346.73 ns | 63.758 ns | 62.618 ns | 5210 B | +| **TUnit.Mocks** | 48.95 ns | 0.713 ns | 0.667 ns | 304 B | +| Imposter | 333.70 ns | 6.365 ns | 6.537 ns | 2400 B | +| Mockolate | 255.13 ns | 5.104 ns | 7.155 ns | 1240 B | +| Moq | 89,610.75 ns | 618.847 ns | 548.592 ns | 7030 B | +| NSubstitute | 3,618.16 ns | 47.208 ns | 44.158 ns | 7088 B | +| FakeItEasy | 3,589.47 ns | 71.324 ns | 84.906 ns | 5210 B | ```mermaid %%{init: { @@ -90,8 +90,8 @@ xychart-beta xychart-beta title "Verification (Never) Performance Comparison" x-axis ["TUnit.Mocks", "Imposter", "Mockolate", "Moq", "NSubstitute", "FakeItEasy"] - y-axis "Time (ns)" 0 --> 75713 - bar [52.69, 330.54, 246.75, 63093.83, 3480.9, 3346.73] + y-axis "Time (ns)" 0 --> 107533 + bar [48.95, 333.7, 255.13, 89610.75, 3618.16, 3589.47] ``` --- @@ -100,12 +100,12 @@ xychart-beta | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **TUnit.Mocks** | 1,268.13 ns | 15.355 ns | 14.363 ns | 4384 B | -| Imposter | 1,800.60 ns | 35.585 ns | 39.552 ns | 11192 B | -| Mockolate | 1,240.47 ns | 18.198 ns | 14.208 ns | 5376 B | -| Moq | 350,159.67 ns | 3,407.180 ns | 3,020.376 ns | 34811 B | -| NSubstitute | 10,585.18 ns | 161.694 ns | 151.248 ns | 16762 B | -| FakeItEasy | 12,068.17 ns | 229.802 ns | 245.885 ns | 19232 B | +| **TUnit.Mocks** | 1,284.07 ns | 25.338 ns | 26.021 ns | 4384 B | +| Imposter | 1,765.97 ns | 35.057 ns | 36.001 ns | 11192 B | +| Mockolate | 1,169.10 ns | 15.594 ns | 14.587 ns | 5376 B | +| Moq | 477,079.81 ns | 2,965.717 ns | 2,476.508 ns | 34699 B | +| NSubstitute | 11,914.00 ns | 155.887 ns | 145.816 ns | 16929 B | +| FakeItEasy | 13,949.65 ns | 231.537 ns | 205.251 ns | 19233 B | ```mermaid %%{init: { @@ -131,8 +131,8 @@ xychart-beta xychart-beta title "Verification (Multiple) Performance Comparison" x-axis ["TUnit.Mocks", "Imposter", "Mockolate", "Moq", "NSubstitute", "FakeItEasy"] - y-axis "Time (ns)" 0 --> 420192 - bar [1268.13, 1800.6, 1240.47, 350159.67, 10585.18, 12068.17] + y-axis "Time (ns)" 0 --> 572496 + bar [1284.07, 1765.97, 1169.1, 477079.81, 11914, 13949.65] ``` ## 🎯 Key Insights @@ -145,4 +145,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-05-23T03:25:20.859Z* +*Last generated: 2026-05-24T03:32:03.972Z* diff --git a/docs/docs/benchmarks/mocks/index.md b/docs/docs/benchmarks/mocks/index.md index da3ebf4694..66a587ad6c 100644 --- a/docs/docs/benchmarks/mocks/index.md +++ b/docs/docs/benchmarks/mocks/index.md @@ -7,7 +7,7 @@ sidebar_position: 1 # Mock Library Benchmarks :::info Last Updated -These benchmarks were automatically generated on **2026-05-23** from the latest CI run. +These benchmarks were automatically generated on **2026-05-24** from the latest CI run. **Environment:** Ubuntu Latest • .NET SDK 10.0.300 ::: @@ -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-05-23T03:25:20.859Z* +*Last generated: 2026-05-24T03:32:03.972Z* diff --git a/docs/static/benchmarks/mocks/Callback.json b/docs/static/benchmarks/mocks/Callback.json index 1a3936454a..fb4b5c2e3c 100644 --- a/docs/static/benchmarks/mocks/Callback.json +++ b/docs/static/benchmarks/mocks/Callback.json @@ -1,5 +1,5 @@ { - "timestamp": "2026-05-23T03:25:20.859Z", + "timestamp": "2026-05-24T03:32:03.972Z", "category": "Callback", "description": "Callback registration and execution", "environment": { @@ -10,122 +10,110 @@ "results": [ { "Method": "TUnit.Mocks", - "Mean": "651.5 ns", - "Error": "12.86 ns", - "StdDev": "16.26 ns", - "Median": "641.0 ns", + "Mean": "633.0 ns", + "Error": "2.74 ns", + "StdDev": "2.56 ns", "Gen0": "0.1879", "Gen1": "0.0019", "Allocated": "3.08 KB" }, { "Method": "Imposter", - "Mean": "462.3 ns", - "Error": "2.34 ns", - "StdDev": "2.19 ns", - "Median": "463.2 ns", + "Mean": "452.0 ns", + "Error": "1.11 ns", + "StdDev": "0.98 ns", "Gen0": "0.1626", "Gen1": "0.0014", "Allocated": "2.66 KB" }, { "Method": "Mockolate", - "Mean": "343.5 ns", - "Error": "1.08 ns", - "StdDev": "1.01 ns", - "Median": "343.6 ns", + "Mean": "334.6 ns", + "Error": "0.63 ns", + "StdDev": "0.53 ns", "Gen0": "0.1163", "Gen1": "0.0005", "Allocated": "1.91 KB" }, { "Method": "Moq", - "Mean": "134,795.9 ns", - "Error": "610.17 ns", - "StdDev": "509.52 ns", - "Median": "134,860.0 ns", - "Gen0": "0.7324", - "Gen1": "0.4883", - "Allocated": "13.29 KB" + "Mean": "182,032.9 ns", + "Error": "888.87 ns", + "StdDev": "742.25 ns", + "Gen0": "0.4883", + "Gen1": "-", + "Allocated": "13.14 KB" }, { "Method": "NSubstitute", - "Mean": "4,047.0 ns", - "Error": "9.55 ns", - "StdDev": "8.93 ns", - "Median": "4,049.0 ns", + "Mean": "4,305.4 ns", + "Error": "9.83 ns", + "StdDev": "9.20 ns", "Gen0": "0.4807", "Gen1": "0.0076", "Allocated": "7.93 KB" }, { "Method": "FakeItEasy", - "Mean": "4,525.1 ns", - "Error": "21.74 ns", - "StdDev": "20.33 ns", - "Median": "4,524.9 ns", + "Mean": "5,155.0 ns", + "Error": "11.96 ns", + "StdDev": "11.19 ns", "Gen0": "0.4501", "Gen1": "0.0153", "Allocated": "7.44 KB" }, { "Method": "'TUnit.Mocks (with args)'", - "Mean": "741.8 ns", - "Error": "2.25 ns", - "StdDev": "2.10 ns", - "Median": "741.5 ns", + "Mean": "776.8 ns", + "Error": "1.61 ns", + "StdDev": "1.43 ns", "Gen0": "0.1936", "Gen1": "0.0019", "Allocated": "3.16 KB" }, { "Method": "'Imposter (with args)'", - "Mean": "534.9 ns", - "Error": "1.78 ns", - "StdDev": "1.58 ns", - "Median": "535.1 ns", + "Mean": "505.8 ns", + "Error": "1.29 ns", + "StdDev": "1.08 ns", "Gen0": "0.1726", "Gen1": "0.0010", "Allocated": "2.82 KB" }, { "Method": "'Mockolate (with args)'", - "Mean": "388.1 ns", - "Error": "0.78 ns", - "StdDev": "0.69 ns", - "Median": "388.0 ns", + "Mean": "393.9 ns", + "Error": "1.09 ns", + "StdDev": "0.97 ns", "Gen0": "0.1192", "Gen1": "0.0005", "Allocated": "1.95 KB" }, { "Method": "'Moq (with args)'", - "Mean": "142,841.2 ns", - "Error": "729.74 ns", - "StdDev": "609.37 ns", - "Median": "142,700.3 ns", + "Mean": "192,734.1 ns", + "Error": "1,236.70 ns", + "StdDev": "1,096.30 ns", "Gen0": "0.4883", "Gen1": "-", "Allocated": "13.73 KB" }, { "Method": "'NSubstitute (with args)'", - "Mean": "4,551.8 ns", - "Error": "19.29 ns", - "StdDev": "18.04 ns", - "Median": "4,555.9 ns", + "Mean": "4,978.4 ns", + "Error": "27.90 ns", + "StdDev": "26.10 ns", "Gen0": "0.5188", - "Gen1": "0.0076", + "Gen1": "0.0153", "Allocated": "8.53 KB" }, { "Method": "'FakeItEasy (with args)'", - "Mean": "5,486.4 ns", - "Error": "52.11 ns", - "StdDev": "46.20 ns", - "Median": "5,486.2 ns", + "Mean": "6,121.0 ns", + "Error": "66.10 ns", + "StdDev": "55.20 ns", "Gen0": "0.5493", - "Gen1": "0.0305", + "Gen1": "0.0610", "Allocated": "9.26 KB" } ] diff --git a/docs/static/benchmarks/mocks/CombinedWorkflow.json b/docs/static/benchmarks/mocks/CombinedWorkflow.json index 2f86decc59..4dee1a4025 100644 --- a/docs/static/benchmarks/mocks/CombinedWorkflow.json +++ b/docs/static/benchmarks/mocks/CombinedWorkflow.json @@ -1,5 +1,5 @@ { - "timestamp": "2026-05-23T03:25:20.859Z", + "timestamp": "2026-05-24T03:32:03.972Z", "category": "CombinedWorkflow", "description": "Full workflow: create → setup → invoke → verify", "environment": { @@ -10,57 +10,57 @@ "results": [ { "Method": "TUnit.Mocks", - "Mean": "1.750 μs", - "Error": "0.0055 μs", - "StdDev": "0.0051 μs", - "Gen0": "0.3738", - "Gen1": "0.0057", + "Mean": "2.024 μs", + "Error": "0.0169 μs", + "StdDev": "0.0158 μs", + "Gen0": "0.2480", + "Gen1": "0.0038", "Allocated": "6.11 KB" }, { "Method": "Imposter", - "Mean": "2.452 μs", - "Error": "0.0037 μs", - "StdDev": "0.0033 μs", - "Gen0": "0.9613", - "Gen1": "0.0458", + "Mean": "2.960 μs", + "Error": "0.0348 μs", + "StdDev": "0.0308 μs", + "Gen0": "0.6409", + "Gen1": "0.0267", "Allocated": "15.71 KB" }, { "Method": "Mockolate", - "Mean": "1.657 μs", - "Error": "0.0034 μs", - "StdDev": "0.0030 μs", - "Gen0": "0.4654", - "Gen1": "0.0076", + "Mean": "1.855 μs", + "Error": "0.0151 μs", + "StdDev": "0.0141 μs", + "Gen0": "0.3109", + "Gen1": "0.0057", "Allocated": "7.63 KB" }, { "Method": "Moq", - "Mean": "400.648 μs", - "Error": "1.4360 μs", - "StdDev": "1.1991 μs", - "Gen0": "1.9531", - "Gen1": "0.9766", - "Allocated": "36.16 KB" + "Mean": "312.804 μs", + "Error": "1.2387 μs", + "StdDev": "1.0344 μs", + "Gen0": "0.9766", + "Gen1": "-", + "Allocated": "36.4 KB" }, { "Method": "NSubstitute", - "Mean": "16.740 μs", - "Error": "0.0750 μs", - "StdDev": "0.0702 μs", - "Gen0": "1.6174", + "Mean": "17.013 μs", + "Error": "0.1191 μs", + "StdDev": "0.1055 μs", + "Gen0": "1.0681", "Gen1": "0.0305", "Allocated": "26.72 KB" }, { "Method": "FakeItEasy", - "Mean": "17.840 μs", - "Error": "0.0865 μs", - "StdDev": "0.0767 μs", - "Gen0": "1.4648", - "Gen1": "0.1221", - "Allocated": "25.52 KB" + "Mean": "17.683 μs", + "Error": "0.0731 μs", + "StdDev": "0.0648 μs", + "Gen0": "1.0376", + "Gen1": "0.0305", + "Allocated": "25.5 KB" } ] } \ No newline at end of file diff --git a/docs/static/benchmarks/mocks/Invocation.json b/docs/static/benchmarks/mocks/Invocation.json index 794ec534e6..2c6980bd78 100644 --- a/docs/static/benchmarks/mocks/Invocation.json +++ b/docs/static/benchmarks/mocks/Invocation.json @@ -1,5 +1,5 @@ { - "timestamp": "2026-05-23T03:25:20.859Z", + "timestamp": "2026-05-24T03:32:03.972Z", "category": "Invocation", "description": "Calling methods on mock objects", "environment": { @@ -10,162 +10,162 @@ "results": [ { "Method": "TUnit.Mocks", - "Mean": "267.09 ns", - "Error": "70.93 ns", - "StdDev": "3.888 ns", + "Mean": "264.60 ns", + "Error": "62.12 ns", + "StdDev": "3.405 ns", "Gen0": "0.0062", "Gen1": "0.0057", "Allocated": "120 B" }, { "Method": "Imposter", - "Mean": "303.44 ns", - "Error": "45.40 ns", - "StdDev": "2.488 ns", + "Mean": "302.39 ns", + "Error": "128.94 ns", + "StdDev": "7.068 ns", "Gen0": "0.0100", "Gen1": "0.0095", "Allocated": "168 B" }, { "Method": "Mockolate", - "Mean": "125.19 ns", - "Error": "47.60 ns", - "StdDev": "2.609 ns", + "Mean": "106.91 ns", + "Error": "31.71 ns", + "StdDev": "1.738 ns", "Gen0": "0.0050", "Gen1": "0.0048", "Allocated": "84 B" }, { "Method": "Moq", - "Mean": "854.16 ns", - "Error": "184.84 ns", - "StdDev": "10.132 ns", + "Mean": "787.59 ns", + "Error": "95.99 ns", + "StdDev": "5.262 ns", "Gen0": "0.0219", "Gen1": "0.0210", "Allocated": "376 B" }, { "Method": "NSubstitute", - "Mean": "773.80 ns", - "Error": "253.15 ns", - "StdDev": "13.876 ns", + "Mean": "714.86 ns", + "Error": "313.36 ns", + "StdDev": "17.176 ns", "Gen0": "0.0172", "Gen1": "0.0162", "Allocated": "304 B" }, { "Method": "FakeItEasy", - "Mean": "1,683.09 ns", - "Error": "403.74 ns", - "StdDev": "22.130 ns", - "Gen0": "0.0534", - "Gen1": "0.0496", + "Mean": "1,779.38 ns", + "Error": "171.21 ns", + "StdDev": "9.385 ns", + "Gen0": "0.0553", + "Gen1": "0.0534", "Allocated": "944 B" }, { "Method": "'TUnit.Mocks (String)'", - "Mean": "160.09 ns", - "Error": "81.23 ns", - "StdDev": "4.452 ns", + "Mean": "166.12 ns", + "Error": "58.97 ns", + "StdDev": "3.232 ns", "Gen0": "0.0048", "Gen1": "0.0045", "Allocated": "88 B" }, { "Method": "'Imposter (String)'", - "Mean": "298.88 ns", - "Error": "118.33 ns", - "StdDev": "6.486 ns", + "Mean": "299.08 ns", + "Error": "64.40 ns", + "StdDev": "3.530 ns", "Gen0": "0.0100", "Gen1": "0.0095", "Allocated": "168 B" }, { "Method": "'Mockolate (String)'", - "Mean": "96.36 ns", - "Error": "63.67 ns", - "StdDev": "3.490 ns", + "Mean": "99.58 ns", + "Error": "23.72 ns", + "StdDev": "1.300 ns", "Gen0": "0.0036", "Gen1": "0.0035", "Allocated": "60 B" }, { "Method": "'Moq (String)'", - "Mean": "560.00 ns", - "Error": "77.13 ns", - "StdDev": "4.228 ns", + "Mean": "539.76 ns", + "Error": "209.98 ns", + "StdDev": "11.510 ns", "Gen0": "0.0172", "Gen1": "0.0162", "Allocated": "296 B" }, { "Method": "'NSubstitute (String)'", - "Mean": "645.05 ns", - "Error": "323.77 ns", - "StdDev": "17.747 ns", + "Mean": "616.67 ns", + "Error": "160.41 ns", + "StdDev": "8.793 ns", "Gen0": "0.0153", "Gen1": "0.0143", "Allocated": "272 B" }, { "Method": "'FakeItEasy (String)'", - "Mean": "1,593.08 ns", - "Error": "601.17 ns", - "StdDev": "32.952 ns", + "Mean": "1,587.78 ns", + "Error": "589.96 ns", + "StdDev": "32.338 ns", "Gen0": "0.0458", "Gen1": "0.0439", "Allocated": "776 B" }, { "Method": "'TUnit.Mocks (100 calls)'", - "Mean": "26,385.27 ns", - "Error": "13,318.32 ns", - "StdDev": "730.022 ns", + "Mean": "27,403.83 ns", + "Error": "12,255.55 ns", + "StdDev": "671.768 ns", "Gen0": "0.6104", "Gen1": "0.5798", "Allocated": "11936 B" }, { "Method": "'Imposter (100 calls)'", - "Mean": "29,093.10 ns", - "Error": "5,316.61 ns", - "StdDev": "291.421 ns", + "Mean": "29,480.58 ns", + "Error": "8,518.10 ns", + "StdDev": "466.906 ns", "Gen0": "0.9766", "Gen1": "0.9155", "Allocated": "16800 B" }, { "Method": "'Mockolate (100 calls)'", - "Mean": "10,208.56 ns", - "Error": "3,017.63 ns", - "StdDev": "165.407 ns", + "Mean": "10,810.59 ns", + "Error": "4,843.38 ns", + "StdDev": "265.482 ns", "Gen0": "0.4883", "Gen1": "0.4730", "Allocated": "8400 B" }, { "Method": "'Moq (100 calls)'", - "Mean": "76,309.33 ns", - "Error": "20,951.72 ns", - "StdDev": "1,148.434 ns", + "Mean": "76,844.63 ns", + "Error": "6,022.98 ns", + "StdDev": "330.140 ns", "Gen0": "2.1973", "Gen1": "2.0752", "Allocated": "37600 B" }, { "Method": "'NSubstitute (100 calls)'", - "Mean": "69,871.25 ns", - "Error": "20,163.48 ns", - "StdDev": "1,105.229 ns", + "Mean": "70,881.18 ns", + "Error": "33,128.57 ns", + "StdDev": "1,815.889 ns", "Gen0": "1.7090", "Gen1": "1.5869", "Allocated": "30848 B" }, { "Method": "'FakeItEasy (100 calls)'", - "Mean": "172,156.28 ns", - "Error": "70,904.67 ns", - "StdDev": "3,886.524 ns", + "Mean": "174,040.90 ns", + "Error": "62,358.93 ns", + "StdDev": "3,418.103 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 3211e63127..785133bfd0 100644 --- a/docs/static/benchmarks/mocks/MockCreation.json +++ b/docs/static/benchmarks/mocks/MockCreation.json @@ -1,5 +1,5 @@ { - "timestamp": "2026-05-23T03:25:20.859Z", + "timestamp": "2026-05-24T03:32:03.972Z", "category": "MockCreation", "description": "Mock instance creation performance", "environment": { @@ -10,123 +10,135 @@ "results": [ { "Method": "TUnit.Mocks", - "Mean": "25.67 ns", - "Error": "0.554 ns", - "StdDev": "0.616 ns", - "Gen0": "0.0115", + "Mean": "27.86 ns", + "Error": "0.627 ns", + "StdDev": "0.671 ns", + "Median": "27.75 ns", + "Gen0": "0.0076", "Gen1": "-", "Gen2": "-", "Allocated": "192 B" }, { "Method": "Imposter", - "Mean": "91.97 ns", - "Error": "1.890 ns", - "StdDev": "2.587 ns", - "Gen0": "0.0262", + "Mean": "99.60 ns", + "Error": "1.970 ns", + "StdDev": "1.935 ns", + "Median": "99.59 ns", + "Gen0": "0.0175", "Gen1": "-", "Gen2": "-", "Allocated": "440 B" }, { "Method": "Mockolate", - "Mean": "61.38 ns", - "Error": "1.273 ns", - "StdDev": "1.191 ns", - "Gen0": "0.0253", + "Mean": "66.16 ns", + "Error": "1.357 ns", + "StdDev": "2.482 ns", + "Median": "65.44 ns", + "Gen0": "0.0168", "Gen1": "-", "Gen2": "-", "Allocated": "424 B" }, { "Method": "Moq", - "Mean": "1,332.99 ns", - "Error": "24.495 ns", - "StdDev": "22.912 ns", - "Gen0": "0.1221", + "Mean": "1,259.41 ns", + "Error": "25.169 ns", + "StdDev": "37.672 ns", + "Median": "1,282.21 ns", + "Gen0": "0.0801", "Gen1": "-", "Gen2": "-", "Allocated": "2048 B" }, { "Method": "NSubstitute", - "Mean": "1,963.28 ns", - "Error": "33.207 ns", - "StdDev": "31.062 ns", - "Gen0": "0.2975", - "Gen1": "-", + "Mean": "1,665.13 ns", + "Error": "11.360 ns", + "StdDev": "10.626 ns", + "Median": "1,664.75 ns", + "Gen0": "0.1984", + "Gen1": "0.0019", "Gen2": "-", "Allocated": "5000 B" }, { "Method": "FakeItEasy", - "Mean": "1,782.54 ns", - "Error": "21.824 ns", - "StdDev": "17.039 ns", - "Gen0": "0.1602", + "Mean": "1,676.09 ns", + "Error": "22.320 ns", + "StdDev": "20.878 ns", + "Median": "1,673.55 ns", + "Gen0": "0.1068", "Gen1": "0.0038", "Gen2": "0.0019", - "Allocated": "2715 B" + "Allocated": "2723 B" }, { "Method": "'TUnit.Mocks (Repository)'", - "Mean": "27.37 ns", - "Error": "0.612 ns", - "StdDev": "1.393 ns", - "Gen0": "0.0114", + "Mean": "28.28 ns", + "Error": "0.624 ns", + "StdDev": "0.613 ns", + "Median": "28.23 ns", + "Gen0": "0.0076", "Gen1": "-", "Gen2": "-", "Allocated": "192 B" }, { "Method": "'Imposter (Repository)'", - "Mean": "141.79 ns", - "Error": "1.939 ns", - "StdDev": "1.813 ns", - "Gen0": "0.0415", + "Mean": "158.23 ns", + "Error": "3.265 ns", + "StdDev": "3.207 ns", + "Median": "158.57 ns", + "Gen0": "0.0277", "Gen1": "-", "Gen2": "-", "Allocated": "696 B" }, { "Method": "'Mockolate (Repository)'", - "Mean": "60.47 ns", - "Error": "1.266 ns", - "StdDev": "2.250 ns", - "Gen0": "0.0272", + "Mean": "69.77 ns", + "Error": "1.462 ns", + "StdDev": "3.179 ns", + "Median": "69.29 ns", + "Gen0": "0.0181", "Gen1": "-", "Gen2": "-", "Allocated": "456 B" }, { "Method": "'Moq (Repository)'", - "Mean": "1,324.35 ns", - "Error": "11.422 ns", - "StdDev": "10.684 ns", - "Gen0": "0.1125", + "Mean": "1,311.94 ns", + "Error": "5.691 ns", + "StdDev": "5.323 ns", + "Median": "1,311.80 ns", + "Gen0": "0.0744", "Gen1": "-", "Gen2": "-", "Allocated": "1912 B" }, { "Method": "'NSubstitute (Repository)'", - "Mean": "1,944.78 ns", - "Error": "24.254 ns", - "StdDev": "22.687 ns", - "Gen0": "0.2975", + "Mean": "1,997.01 ns", + "Error": "21.249 ns", + "StdDev": "18.837 ns", + "Median": "1,995.42 ns", + "Gen0": "0.1984", "Gen1": "-", "Gen2": "-", "Allocated": "5000 B" }, { "Method": "'FakeItEasy (Repository)'", - "Mean": "1,856.80 ns", - "Error": "36.803 ns", - "StdDev": "39.379 ns", - "Gen0": "0.1602", + "Mean": "1,594.46 ns", + "Error": "16.828 ns", + "StdDev": "15.741 ns", + "Median": "1,594.11 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 0ccc638b33..28865f48cb 100644 --- a/docs/static/benchmarks/mocks/Setup.json +++ b/docs/static/benchmarks/mocks/Setup.json @@ -1,5 +1,5 @@ { - "timestamp": "2026-05-23T03:25:20.859Z", + "timestamp": "2026-05-24T03:32:03.972Z", "category": "Setup", "description": "Mock behavior configuration (returns, matchers)", "environment": { @@ -10,110 +10,110 @@ "results": [ { "Method": "TUnit.Mocks", - "Mean": "505.5 ns", - "Error": "3.56 ns", - "StdDev": "3.33 ns", + "Mean": "540.2 ns", + "Error": "4.95 ns", + "StdDev": "4.63 ns", "Gen0": "0.1411", "Gen1": "0.0010", "Allocated": "2.31 KB" }, { "Method": "Imposter", - "Mean": "766.9 ns", - "Error": "4.68 ns", - "StdDev": "3.91 ns", + "Mean": "757.1 ns", + "Error": "6.71 ns", + "StdDev": "5.95 ns", "Gen0": "0.3738", "Gen1": "0.0076", "Allocated": "6.12 KB" }, { "Method": "Mockolate", - "Mean": "322.4 ns", - "Error": "1.49 ns", - "StdDev": "1.17 ns", + "Mean": "359.1 ns", + "Error": "2.25 ns", + "StdDev": "1.99 ns", "Gen0": "0.1006", "Gen1": "0.0005", "Allocated": "1.65 KB" }, { "Method": "Moq", - "Mean": "425,511.3 ns", - "Error": "1,122.34 ns", - "StdDev": "937.21 ns", + "Mean": "298,446.7 ns", + "Error": "1,554.11 ns", + "StdDev": "1,213.35 ns", "Gen0": "0.9766", "Gen1": "-", - "Allocated": "28.55 KB" + "Allocated": "28.52 KB" }, { "Method": "NSubstitute", - "Mean": "5,529.3 ns", - "Error": "31.18 ns", - "StdDev": "27.64 ns", + "Mean": "5,228.7 ns", + "Error": "54.83 ns", + "StdDev": "51.29 ns", "Gen0": "0.5493", - "Gen1": "-", - "Allocated": "9.01 KB" + "Gen1": "0.0076", + "Allocated": "9.06 KB" }, { "Method": "FakeItEasy", - "Mean": "8,191.7 ns", - "Error": "68.75 ns", - "StdDev": "64.31 ns", - "Gen0": "0.6104", - "Gen1": "0.0305", + "Mean": "7,010.2 ns", + "Error": "47.72 ns", + "StdDev": "39.85 ns", + "Gen0": "0.6256", + "Gen1": "0.0153", "Allocated": "10.45 KB" }, { "Method": "'TUnit.Mocks (Multiple)'", - "Mean": "740.6 ns", - "Error": "3.25 ns", - "StdDev": "3.04 ns", + "Mean": "783.3 ns", + "Error": "6.99 ns", + "StdDev": "6.19 ns", "Gen0": "0.1888", "Gen1": "0.0019", "Allocated": "3.09 KB" }, { "Method": "'Imposter (Multiple)'", - "Mean": "1,331.4 ns", - "Error": "26.31 ns", - "StdDev": "28.15 ns", + "Mean": "1,406.8 ns", + "Error": "20.76 ns", + "StdDev": "18.40 ns", "Gen0": "0.6485", "Gen1": "0.0248", "Allocated": "10.59 KB" }, { "Method": "'Mockolate (Multiple)'", - "Mean": "539.6 ns", - "Error": "2.38 ns", - "StdDev": "2.11 ns", + "Mean": "577.8 ns", + "Error": "3.66 ns", + "StdDev": "3.06 ns", "Gen0": "0.1583", "Gen1": "0.0010", "Allocated": "2.6 KB" }, { "Method": "'Moq (Multiple)'", - "Mean": "113,475.6 ns", - "Error": "327.66 ns", - "StdDev": "273.61 ns", + "Mean": "88,527.5 ns", + "Error": "1,290.13 ns", + "StdDev": "1,206.79 ns", "Gen0": "0.9766", "Gen1": "0.7324", "Allocated": "16.53 KB" }, { "Method": "'NSubstitute (Multiple)'", - "Mean": "11,943.4 ns", - "Error": "153.18 ns", - "StdDev": "135.79 ns", - "Gen0": "1.2207", - "Gen1": "-", + "Mean": "10,702.7 ns", + "Error": "64.66 ns", + "StdDev": "57.32 ns", + "Gen0": "1.2360", + "Gen1": "0.0305", "Allocated": "20.31 KB" }, { "Method": "'FakeItEasy (Multiple)'", - "Mean": "8,207.8 ns", - "Error": "149.09 ns", - "StdDev": "139.46 ns", - "Gen0": "0.6714", - "Gen1": "0.0610", + "Mean": "6,901.6 ns", + "Error": "112.81 ns", + "StdDev": "105.52 ns", + "Gen0": "0.7095", + "Gen1": "0.0153", "Allocated": "11.71 KB" } ] diff --git a/docs/static/benchmarks/mocks/Verification.json b/docs/static/benchmarks/mocks/Verification.json index 81ae468f18..f152d39ab5 100644 --- a/docs/static/benchmarks/mocks/Verification.json +++ b/docs/static/benchmarks/mocks/Verification.json @@ -1,5 +1,5 @@ { - "timestamp": "2026-05-23T03:25:20.859Z", + "timestamp": "2026-05-24T03:32:03.972Z", "category": "Verification", "description": "Verifying mock method calls", "environment": { @@ -10,165 +10,165 @@ "results": [ { "Method": "TUnit.Mocks", - "Mean": "748.50 ns", - "Error": "8.762 ns", - "StdDev": "8.196 ns", + "Mean": "733.68 ns", + "Error": "13.840 ns", + "StdDev": "12.946 ns", "Gen0": "0.1774", "Gen1": "0.0010", "Allocated": "2968 B" }, { "Method": "Imposter", - "Mean": "697.96 ns", - "Error": "8.708 ns", - "StdDev": "8.145 ns", + "Mean": "693.60 ns", + "Error": "9.312 ns", + "StdDev": "8.710 ns", "Gen0": "0.2794", "Gen1": "0.0038", "Allocated": "4688 B" }, { "Method": "Mockolate", - "Mean": "409.36 ns", - "Error": "4.167 ns", - "StdDev": "3.898 ns", + "Mean": "409.47 ns", + "Error": "5.374 ns", + "StdDev": "5.027 ns", "Gen0": "0.1335", "Gen1": "0.0005", "Allocated": "2240 B" }, { "Method": "Moq", - "Mean": "244,163.13 ns", - "Error": "1,858.746 ns", - "StdDev": "1,738.672 ns", + "Mean": "346,315.18 ns", + "Error": "1,744.817 ns", + "StdDev": "1,457.001 ns", "Gen0": "0.9766", - "Gen1": "0.4883", - "Allocated": "24324 B" + "Gen1": "-", + "Allocated": "24325 B" }, { "Method": "NSubstitute", - "Mean": "5,962.74 ns", - "Error": "84.536 ns", - "StdDev": "79.075 ns", - "Gen0": "0.5951", - "Gen1": "0.0076", + "Mean": "6,314.81 ns", + "Error": "124.442 ns", + "StdDev": "116.403 ns", + "Gen0": "0.5493", + "Gen1": "-", "Allocated": "10064 B" }, { "Method": "FakeItEasy", - "Mean": "6,663.36 ns", - "Error": "115.716 ns", - "StdDev": "108.241 ns", + "Mean": "7,314.49 ns", + "Error": "126.101 ns", + "StdDev": "111.785 ns", "Gen0": "0.6409", "Gen1": "0.0153", "Allocated": "10722 B" }, { "Method": "'TUnit.Mocks (Never)'", - "Mean": "52.69 ns", - "Error": "0.430 ns", - "StdDev": "0.402 ns", + "Mean": "48.95 ns", + "Error": "0.713 ns", + "StdDev": "0.667 ns", "Gen0": "0.0181", "Gen1": "-", "Allocated": "304 B" }, { "Method": "'Imposter (Never)'", - "Mean": "330.54 ns", - "Error": "6.382 ns", - "StdDev": "5.658 ns", + "Mean": "333.70 ns", + "Error": "6.365 ns", + "StdDev": "6.537 ns", "Gen0": "0.1431", "Gen1": "0.0010", "Allocated": "2400 B" }, { "Method": "'Mockolate (Never)'", - "Mean": "246.75 ns", - "Error": "2.633 ns", - "StdDev": "2.463 ns", + "Mean": "255.13 ns", + "Error": "5.104 ns", + "StdDev": "7.155 ns", "Gen0": "0.0739", "Gen1": "-", "Allocated": "1240 B" }, { "Method": "'Moq (Never)'", - "Mean": "63,093.83 ns", - "Error": "340.587 ns", - "StdDev": "284.406 ns", - "Gen0": "0.3662", - "Gen1": "0.2441", - "Allocated": "6925 B" + "Mean": "89,610.75 ns", + "Error": "618.847 ns", + "StdDev": "548.592 ns", + "Gen0": "0.2441", + "Gen1": "-", + "Allocated": "7030 B" }, { "Method": "'NSubstitute (Never)'", - "Mean": "3,480.90 ns", - "Error": "61.830 ns", - "StdDev": "54.810 ns", + "Mean": "3,618.16 ns", + "Error": "47.208 ns", + "StdDev": "44.158 ns", "Gen0": "0.4234", "Gen1": "0.0038", "Allocated": "7088 B" }, { "Method": "'FakeItEasy (Never)'", - "Mean": "3,346.73 ns", - "Error": "63.758 ns", - "StdDev": "62.618 ns", + "Mean": "3,589.47 ns", + "Error": "71.324 ns", + "StdDev": "84.906 ns", "Gen0": "0.3052", "Gen1": "0.0153", "Allocated": "5210 B" }, { "Method": "'TUnit.Mocks (Multiple)'", - "Mean": "1,268.13 ns", - "Error": "15.355 ns", - "StdDev": "14.363 ns", + "Mean": "1,284.07 ns", + "Error": "25.338 ns", + "StdDev": "26.021 ns", "Gen0": "0.2613", "Gen1": "0.0019", "Allocated": "4384 B" }, { "Method": "'Imposter (Multiple)'", - "Mean": "1,800.60 ns", - "Error": "35.585 ns", - "StdDev": "39.552 ns", + "Mean": "1,765.97 ns", + "Error": "35.057 ns", + "StdDev": "36.001 ns", "Gen0": "0.6676", "Gen1": "0.0210", "Allocated": "11192 B" }, { "Method": "'Mockolate (Multiple)'", - "Mean": "1,240.47 ns", - "Error": "18.198 ns", - "StdDev": "14.208 ns", + "Mean": "1,169.10 ns", + "Error": "15.594 ns", + "StdDev": "14.587 ns", "Gen0": "0.3204", "Gen1": "0.0038", "Allocated": "5376 B" }, { "Method": "'Moq (Multiple)'", - "Mean": "350,159.67 ns", - "Error": "3,407.180 ns", - "StdDev": "3,020.376 ns", + "Mean": "477,079.81 ns", + "Error": "2,965.717 ns", + "StdDev": "2,476.508 ns", "Gen0": "1.9531", "Gen1": "0.9766", - "Allocated": "34811 B" + "Allocated": "34699 B" }, { "Method": "'NSubstitute (Multiple)'", - "Mean": "10,585.18 ns", - "Error": "161.694 ns", - "StdDev": "151.248 ns", - "Gen0": "0.9918", - "Gen1": "0.0153", - "Allocated": "16762 B" + "Mean": "11,914.00 ns", + "Error": "155.887 ns", + "StdDev": "145.816 ns", + "Gen0": "0.9766", + "Gen1": "-", + "Allocated": "16929 B" }, { "Method": "'FakeItEasy (Multiple)'", - "Mean": "12,068.17 ns", - "Error": "229.802 ns", - "StdDev": "245.885 ns", + "Mean": "13,949.65 ns", + "Error": "231.537 ns", + "StdDev": "205.251 ns", "Gen0": "1.0986", - "Gen1": "0.0610", - "Allocated": "19232 B" + "Gen1": "-", + "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 aae6f27c73..65e42cac60 100644 --- a/docs/static/benchmarks/mocks/latest.json +++ b/docs/static/benchmarks/mocks/latest.json @@ -1,5 +1,5 @@ { - "timestamp": "2026-05-23T03:25:20.859Z", + "timestamp": "2026-05-24T03:32:03.972Z", "environment": { "benchmarkDotNetVersion": "BenchmarkDotNet v0.15.8, Linux Ubuntu 24.04.4 LTS (Noble Numbat)", "sdk": ".NET SDK 10.0.300", @@ -9,340 +9,328 @@ "Callback": [ { "Method": "TUnit.Mocks", - "Mean": "651.5 ns", - "Error": "12.86 ns", - "StdDev": "16.26 ns", - "Median": "641.0 ns", + "Mean": "633.0 ns", + "Error": "2.74 ns", + "StdDev": "2.56 ns", "Gen0": "0.1879", "Gen1": "0.0019", "Allocated": "3.08 KB" }, { "Method": "Imposter", - "Mean": "462.3 ns", - "Error": "2.34 ns", - "StdDev": "2.19 ns", - "Median": "463.2 ns", + "Mean": "452.0 ns", + "Error": "1.11 ns", + "StdDev": "0.98 ns", "Gen0": "0.1626", "Gen1": "0.0014", "Allocated": "2.66 KB" }, { "Method": "Mockolate", - "Mean": "343.5 ns", - "Error": "1.08 ns", - "StdDev": "1.01 ns", - "Median": "343.6 ns", + "Mean": "334.6 ns", + "Error": "0.63 ns", + "StdDev": "0.53 ns", "Gen0": "0.1163", "Gen1": "0.0005", "Allocated": "1.91 KB" }, { "Method": "Moq", - "Mean": "134,795.9 ns", - "Error": "610.17 ns", - "StdDev": "509.52 ns", - "Median": "134,860.0 ns", - "Gen0": "0.7324", - "Gen1": "0.4883", - "Allocated": "13.29 KB" + "Mean": "182,032.9 ns", + "Error": "888.87 ns", + "StdDev": "742.25 ns", + "Gen0": "0.4883", + "Gen1": "-", + "Allocated": "13.14 KB" }, { "Method": "NSubstitute", - "Mean": "4,047.0 ns", - "Error": "9.55 ns", - "StdDev": "8.93 ns", - "Median": "4,049.0 ns", + "Mean": "4,305.4 ns", + "Error": "9.83 ns", + "StdDev": "9.20 ns", "Gen0": "0.4807", "Gen1": "0.0076", "Allocated": "7.93 KB" }, { "Method": "FakeItEasy", - "Mean": "4,525.1 ns", - "Error": "21.74 ns", - "StdDev": "20.33 ns", - "Median": "4,524.9 ns", + "Mean": "5,155.0 ns", + "Error": "11.96 ns", + "StdDev": "11.19 ns", "Gen0": "0.4501", "Gen1": "0.0153", "Allocated": "7.44 KB" }, { "Method": "'TUnit.Mocks (with args)'", - "Mean": "741.8 ns", - "Error": "2.25 ns", - "StdDev": "2.10 ns", - "Median": "741.5 ns", + "Mean": "776.8 ns", + "Error": "1.61 ns", + "StdDev": "1.43 ns", "Gen0": "0.1936", "Gen1": "0.0019", "Allocated": "3.16 KB" }, { "Method": "'Imposter (with args)'", - "Mean": "534.9 ns", - "Error": "1.78 ns", - "StdDev": "1.58 ns", - "Median": "535.1 ns", + "Mean": "505.8 ns", + "Error": "1.29 ns", + "StdDev": "1.08 ns", "Gen0": "0.1726", "Gen1": "0.0010", "Allocated": "2.82 KB" }, { "Method": "'Mockolate (with args)'", - "Mean": "388.1 ns", - "Error": "0.78 ns", - "StdDev": "0.69 ns", - "Median": "388.0 ns", + "Mean": "393.9 ns", + "Error": "1.09 ns", + "StdDev": "0.97 ns", "Gen0": "0.1192", "Gen1": "0.0005", "Allocated": "1.95 KB" }, { "Method": "'Moq (with args)'", - "Mean": "142,841.2 ns", - "Error": "729.74 ns", - "StdDev": "609.37 ns", - "Median": "142,700.3 ns", + "Mean": "192,734.1 ns", + "Error": "1,236.70 ns", + "StdDev": "1,096.30 ns", "Gen0": "0.4883", "Gen1": "-", "Allocated": "13.73 KB" }, { "Method": "'NSubstitute (with args)'", - "Mean": "4,551.8 ns", - "Error": "19.29 ns", - "StdDev": "18.04 ns", - "Median": "4,555.9 ns", + "Mean": "4,978.4 ns", + "Error": "27.90 ns", + "StdDev": "26.10 ns", "Gen0": "0.5188", - "Gen1": "0.0076", + "Gen1": "0.0153", "Allocated": "8.53 KB" }, { "Method": "'FakeItEasy (with args)'", - "Mean": "5,486.4 ns", - "Error": "52.11 ns", - "StdDev": "46.20 ns", - "Median": "5,486.2 ns", + "Mean": "6,121.0 ns", + "Error": "66.10 ns", + "StdDev": "55.20 ns", "Gen0": "0.5493", - "Gen1": "0.0305", + "Gen1": "0.0610", "Allocated": "9.26 KB" } ], "CombinedWorkflow": [ { "Method": "TUnit.Mocks", - "Mean": "1.750 μs", - "Error": "0.0055 μs", - "StdDev": "0.0051 μs", - "Gen0": "0.3738", - "Gen1": "0.0057", + "Mean": "2.024 μs", + "Error": "0.0169 μs", + "StdDev": "0.0158 μs", + "Gen0": "0.2480", + "Gen1": "0.0038", "Allocated": "6.11 KB" }, { "Method": "Imposter", - "Mean": "2.452 μs", - "Error": "0.0037 μs", - "StdDev": "0.0033 μs", - "Gen0": "0.9613", - "Gen1": "0.0458", + "Mean": "2.960 μs", + "Error": "0.0348 μs", + "StdDev": "0.0308 μs", + "Gen0": "0.6409", + "Gen1": "0.0267", "Allocated": "15.71 KB" }, { "Method": "Mockolate", - "Mean": "1.657 μs", - "Error": "0.0034 μs", - "StdDev": "0.0030 μs", - "Gen0": "0.4654", - "Gen1": "0.0076", + "Mean": "1.855 μs", + "Error": "0.0151 μs", + "StdDev": "0.0141 μs", + "Gen0": "0.3109", + "Gen1": "0.0057", "Allocated": "7.63 KB" }, { "Method": "Moq", - "Mean": "400.648 μs", - "Error": "1.4360 μs", - "StdDev": "1.1991 μs", - "Gen0": "1.9531", - "Gen1": "0.9766", - "Allocated": "36.16 KB" + "Mean": "312.804 μs", + "Error": "1.2387 μs", + "StdDev": "1.0344 μs", + "Gen0": "0.9766", + "Gen1": "-", + "Allocated": "36.4 KB" }, { "Method": "NSubstitute", - "Mean": "16.740 μs", - "Error": "0.0750 μs", - "StdDev": "0.0702 μs", - "Gen0": "1.6174", + "Mean": "17.013 μs", + "Error": "0.1191 μs", + "StdDev": "0.1055 μs", + "Gen0": "1.0681", "Gen1": "0.0305", "Allocated": "26.72 KB" }, { "Method": "FakeItEasy", - "Mean": "17.840 μs", - "Error": "0.0865 μs", - "StdDev": "0.0767 μs", - "Gen0": "1.4648", - "Gen1": "0.1221", - "Allocated": "25.52 KB" + "Mean": "17.683 μs", + "Error": "0.0731 μs", + "StdDev": "0.0648 μs", + "Gen0": "1.0376", + "Gen1": "0.0305", + "Allocated": "25.5 KB" } ], "Invocation": [ { "Method": "TUnit.Mocks", - "Mean": "267.09 ns", - "Error": "70.93 ns", - "StdDev": "3.888 ns", + "Mean": "264.60 ns", + "Error": "62.12 ns", + "StdDev": "3.405 ns", "Gen0": "0.0062", "Gen1": "0.0057", "Allocated": "120 B" }, { "Method": "Imposter", - "Mean": "303.44 ns", - "Error": "45.40 ns", - "StdDev": "2.488 ns", + "Mean": "302.39 ns", + "Error": "128.94 ns", + "StdDev": "7.068 ns", "Gen0": "0.0100", "Gen1": "0.0095", "Allocated": "168 B" }, { "Method": "Mockolate", - "Mean": "125.19 ns", - "Error": "47.60 ns", - "StdDev": "2.609 ns", + "Mean": "106.91 ns", + "Error": "31.71 ns", + "StdDev": "1.738 ns", "Gen0": "0.0050", "Gen1": "0.0048", "Allocated": "84 B" }, { "Method": "Moq", - "Mean": "854.16 ns", - "Error": "184.84 ns", - "StdDev": "10.132 ns", + "Mean": "787.59 ns", + "Error": "95.99 ns", + "StdDev": "5.262 ns", "Gen0": "0.0219", "Gen1": "0.0210", "Allocated": "376 B" }, { "Method": "NSubstitute", - "Mean": "773.80 ns", - "Error": "253.15 ns", - "StdDev": "13.876 ns", + "Mean": "714.86 ns", + "Error": "313.36 ns", + "StdDev": "17.176 ns", "Gen0": "0.0172", "Gen1": "0.0162", "Allocated": "304 B" }, { "Method": "FakeItEasy", - "Mean": "1,683.09 ns", - "Error": "403.74 ns", - "StdDev": "22.130 ns", - "Gen0": "0.0534", - "Gen1": "0.0496", + "Mean": "1,779.38 ns", + "Error": "171.21 ns", + "StdDev": "9.385 ns", + "Gen0": "0.0553", + "Gen1": "0.0534", "Allocated": "944 B" }, { "Method": "'TUnit.Mocks (String)'", - "Mean": "160.09 ns", - "Error": "81.23 ns", - "StdDev": "4.452 ns", + "Mean": "166.12 ns", + "Error": "58.97 ns", + "StdDev": "3.232 ns", "Gen0": "0.0048", "Gen1": "0.0045", "Allocated": "88 B" }, { "Method": "'Imposter (String)'", - "Mean": "298.88 ns", - "Error": "118.33 ns", - "StdDev": "6.486 ns", + "Mean": "299.08 ns", + "Error": "64.40 ns", + "StdDev": "3.530 ns", "Gen0": "0.0100", "Gen1": "0.0095", "Allocated": "168 B" }, { "Method": "'Mockolate (String)'", - "Mean": "96.36 ns", - "Error": "63.67 ns", - "StdDev": "3.490 ns", + "Mean": "99.58 ns", + "Error": "23.72 ns", + "StdDev": "1.300 ns", "Gen0": "0.0036", "Gen1": "0.0035", "Allocated": "60 B" }, { "Method": "'Moq (String)'", - "Mean": "560.00 ns", - "Error": "77.13 ns", - "StdDev": "4.228 ns", + "Mean": "539.76 ns", + "Error": "209.98 ns", + "StdDev": "11.510 ns", "Gen0": "0.0172", "Gen1": "0.0162", "Allocated": "296 B" }, { "Method": "'NSubstitute (String)'", - "Mean": "645.05 ns", - "Error": "323.77 ns", - "StdDev": "17.747 ns", + "Mean": "616.67 ns", + "Error": "160.41 ns", + "StdDev": "8.793 ns", "Gen0": "0.0153", "Gen1": "0.0143", "Allocated": "272 B" }, { "Method": "'FakeItEasy (String)'", - "Mean": "1,593.08 ns", - "Error": "601.17 ns", - "StdDev": "32.952 ns", + "Mean": "1,587.78 ns", + "Error": "589.96 ns", + "StdDev": "32.338 ns", "Gen0": "0.0458", "Gen1": "0.0439", "Allocated": "776 B" }, { "Method": "'TUnit.Mocks (100 calls)'", - "Mean": "26,385.27 ns", - "Error": "13,318.32 ns", - "StdDev": "730.022 ns", + "Mean": "27,403.83 ns", + "Error": "12,255.55 ns", + "StdDev": "671.768 ns", "Gen0": "0.6104", "Gen1": "0.5798", "Allocated": "11936 B" }, { "Method": "'Imposter (100 calls)'", - "Mean": "29,093.10 ns", - "Error": "5,316.61 ns", - "StdDev": "291.421 ns", + "Mean": "29,480.58 ns", + "Error": "8,518.10 ns", + "StdDev": "466.906 ns", "Gen0": "0.9766", "Gen1": "0.9155", "Allocated": "16800 B" }, { "Method": "'Mockolate (100 calls)'", - "Mean": "10,208.56 ns", - "Error": "3,017.63 ns", - "StdDev": "165.407 ns", + "Mean": "10,810.59 ns", + "Error": "4,843.38 ns", + "StdDev": "265.482 ns", "Gen0": "0.4883", "Gen1": "0.4730", "Allocated": "8400 B" }, { "Method": "'Moq (100 calls)'", - "Mean": "76,309.33 ns", - "Error": "20,951.72 ns", - "StdDev": "1,148.434 ns", + "Mean": "76,844.63 ns", + "Error": "6,022.98 ns", + "StdDev": "330.140 ns", "Gen0": "2.1973", "Gen1": "2.0752", "Allocated": "37600 B" }, { "Method": "'NSubstitute (100 calls)'", - "Mean": "69,871.25 ns", - "Error": "20,163.48 ns", - "StdDev": "1,105.229 ns", + "Mean": "70,881.18 ns", + "Error": "33,128.57 ns", + "StdDev": "1,815.889 ns", "Gen0": "1.7090", "Gen1": "1.5869", "Allocated": "30848 B" }, { "Method": "'FakeItEasy (100 calls)'", - "Mean": "172,156.28 ns", - "Error": "70,904.67 ns", - "StdDev": "3,886.524 ns", + "Mean": "174,040.90 ns", + "Error": "62,358.93 ns", + "StdDev": "3,418.103 ns", "Gen0": "5.6152", "Gen1": "5.3711", "Allocated": "94400 B" @@ -351,403 +339,415 @@ "MockCreation": [ { "Method": "TUnit.Mocks", - "Mean": "25.67 ns", - "Error": "0.554 ns", - "StdDev": "0.616 ns", - "Gen0": "0.0115", + "Mean": "27.86 ns", + "Error": "0.627 ns", + "StdDev": "0.671 ns", + "Median": "27.75 ns", + "Gen0": "0.0076", "Gen1": "-", "Gen2": "-", "Allocated": "192 B" }, { "Method": "Imposter", - "Mean": "91.97 ns", - "Error": "1.890 ns", - "StdDev": "2.587 ns", - "Gen0": "0.0262", + "Mean": "99.60 ns", + "Error": "1.970 ns", + "StdDev": "1.935 ns", + "Median": "99.59 ns", + "Gen0": "0.0175", "Gen1": "-", "Gen2": "-", "Allocated": "440 B" }, { "Method": "Mockolate", - "Mean": "61.38 ns", - "Error": "1.273 ns", - "StdDev": "1.191 ns", - "Gen0": "0.0253", + "Mean": "66.16 ns", + "Error": "1.357 ns", + "StdDev": "2.482 ns", + "Median": "65.44 ns", + "Gen0": "0.0168", "Gen1": "-", "Gen2": "-", "Allocated": "424 B" }, { "Method": "Moq", - "Mean": "1,332.99 ns", - "Error": "24.495 ns", - "StdDev": "22.912 ns", - "Gen0": "0.1221", + "Mean": "1,259.41 ns", + "Error": "25.169 ns", + "StdDev": "37.672 ns", + "Median": "1,282.21 ns", + "Gen0": "0.0801", "Gen1": "-", "Gen2": "-", "Allocated": "2048 B" }, { "Method": "NSubstitute", - "Mean": "1,963.28 ns", - "Error": "33.207 ns", - "StdDev": "31.062 ns", - "Gen0": "0.2975", - "Gen1": "-", + "Mean": "1,665.13 ns", + "Error": "11.360 ns", + "StdDev": "10.626 ns", + "Median": "1,664.75 ns", + "Gen0": "0.1984", + "Gen1": "0.0019", "Gen2": "-", "Allocated": "5000 B" }, { "Method": "FakeItEasy", - "Mean": "1,782.54 ns", - "Error": "21.824 ns", - "StdDev": "17.039 ns", - "Gen0": "0.1602", + "Mean": "1,676.09 ns", + "Error": "22.320 ns", + "StdDev": "20.878 ns", + "Median": "1,673.55 ns", + "Gen0": "0.1068", "Gen1": "0.0038", "Gen2": "0.0019", - "Allocated": "2715 B" + "Allocated": "2723 B" }, { "Method": "'TUnit.Mocks (Repository)'", - "Mean": "27.37 ns", - "Error": "0.612 ns", - "StdDev": "1.393 ns", - "Gen0": "0.0114", + "Mean": "28.28 ns", + "Error": "0.624 ns", + "StdDev": "0.613 ns", + "Median": "28.23 ns", + "Gen0": "0.0076", "Gen1": "-", "Gen2": "-", "Allocated": "192 B" }, { "Method": "'Imposter (Repository)'", - "Mean": "141.79 ns", - "Error": "1.939 ns", - "StdDev": "1.813 ns", - "Gen0": "0.0415", + "Mean": "158.23 ns", + "Error": "3.265 ns", + "StdDev": "3.207 ns", + "Median": "158.57 ns", + "Gen0": "0.0277", "Gen1": "-", "Gen2": "-", "Allocated": "696 B" }, { "Method": "'Mockolate (Repository)'", - "Mean": "60.47 ns", - "Error": "1.266 ns", - "StdDev": "2.250 ns", - "Gen0": "0.0272", + "Mean": "69.77 ns", + "Error": "1.462 ns", + "StdDev": "3.179 ns", + "Median": "69.29 ns", + "Gen0": "0.0181", "Gen1": "-", "Gen2": "-", "Allocated": "456 B" }, { "Method": "'Moq (Repository)'", - "Mean": "1,324.35 ns", - "Error": "11.422 ns", - "StdDev": "10.684 ns", - "Gen0": "0.1125", + "Mean": "1,311.94 ns", + "Error": "5.691 ns", + "StdDev": "5.323 ns", + "Median": "1,311.80 ns", + "Gen0": "0.0744", "Gen1": "-", "Gen2": "-", "Allocated": "1912 B" }, { "Method": "'NSubstitute (Repository)'", - "Mean": "1,944.78 ns", - "Error": "24.254 ns", - "StdDev": "22.687 ns", - "Gen0": "0.2975", + "Mean": "1,997.01 ns", + "Error": "21.249 ns", + "StdDev": "18.837 ns", + "Median": "1,995.42 ns", + "Gen0": "0.1984", "Gen1": "-", "Gen2": "-", "Allocated": "5000 B" }, { "Method": "'FakeItEasy (Repository)'", - "Mean": "1,856.80 ns", - "Error": "36.803 ns", - "StdDev": "39.379 ns", - "Gen0": "0.1602", + "Mean": "1,594.46 ns", + "Error": "16.828 ns", + "StdDev": "15.741 ns", + "Median": "1,594.11 ns", + "Gen0": "0.1068", "Gen1": "0.0038", "Gen2": "0.0019", - "Allocated": "2715 B" + "Allocated": "2723 B" } ], "Setup": [ { "Method": "TUnit.Mocks", - "Mean": "505.5 ns", - "Error": "3.56 ns", - "StdDev": "3.33 ns", + "Mean": "540.2 ns", + "Error": "4.95 ns", + "StdDev": "4.63 ns", "Gen0": "0.1411", "Gen1": "0.0010", "Allocated": "2.31 KB" }, { "Method": "Imposter", - "Mean": "766.9 ns", - "Error": "4.68 ns", - "StdDev": "3.91 ns", + "Mean": "757.1 ns", + "Error": "6.71 ns", + "StdDev": "5.95 ns", "Gen0": "0.3738", "Gen1": "0.0076", "Allocated": "6.12 KB" }, { "Method": "Mockolate", - "Mean": "322.4 ns", - "Error": "1.49 ns", - "StdDev": "1.17 ns", + "Mean": "359.1 ns", + "Error": "2.25 ns", + "StdDev": "1.99 ns", "Gen0": "0.1006", "Gen1": "0.0005", "Allocated": "1.65 KB" }, { "Method": "Moq", - "Mean": "425,511.3 ns", - "Error": "1,122.34 ns", - "StdDev": "937.21 ns", + "Mean": "298,446.7 ns", + "Error": "1,554.11 ns", + "StdDev": "1,213.35 ns", "Gen0": "0.9766", "Gen1": "-", - "Allocated": "28.55 KB" + "Allocated": "28.52 KB" }, { "Method": "NSubstitute", - "Mean": "5,529.3 ns", - "Error": "31.18 ns", - "StdDev": "27.64 ns", + "Mean": "5,228.7 ns", + "Error": "54.83 ns", + "StdDev": "51.29 ns", "Gen0": "0.5493", - "Gen1": "-", - "Allocated": "9.01 KB" + "Gen1": "0.0076", + "Allocated": "9.06 KB" }, { "Method": "FakeItEasy", - "Mean": "8,191.7 ns", - "Error": "68.75 ns", - "StdDev": "64.31 ns", - "Gen0": "0.6104", - "Gen1": "0.0305", + "Mean": "7,010.2 ns", + "Error": "47.72 ns", + "StdDev": "39.85 ns", + "Gen0": "0.6256", + "Gen1": "0.0153", "Allocated": "10.45 KB" }, { "Method": "'TUnit.Mocks (Multiple)'", - "Mean": "740.6 ns", - "Error": "3.25 ns", - "StdDev": "3.04 ns", + "Mean": "783.3 ns", + "Error": "6.99 ns", + "StdDev": "6.19 ns", "Gen0": "0.1888", "Gen1": "0.0019", "Allocated": "3.09 KB" }, { "Method": "'Imposter (Multiple)'", - "Mean": "1,331.4 ns", - "Error": "26.31 ns", - "StdDev": "28.15 ns", + "Mean": "1,406.8 ns", + "Error": "20.76 ns", + "StdDev": "18.40 ns", "Gen0": "0.6485", "Gen1": "0.0248", "Allocated": "10.59 KB" }, { "Method": "'Mockolate (Multiple)'", - "Mean": "539.6 ns", - "Error": "2.38 ns", - "StdDev": "2.11 ns", + "Mean": "577.8 ns", + "Error": "3.66 ns", + "StdDev": "3.06 ns", "Gen0": "0.1583", "Gen1": "0.0010", "Allocated": "2.6 KB" }, { "Method": "'Moq (Multiple)'", - "Mean": "113,475.6 ns", - "Error": "327.66 ns", - "StdDev": "273.61 ns", + "Mean": "88,527.5 ns", + "Error": "1,290.13 ns", + "StdDev": "1,206.79 ns", "Gen0": "0.9766", "Gen1": "0.7324", "Allocated": "16.53 KB" }, { "Method": "'NSubstitute (Multiple)'", - "Mean": "11,943.4 ns", - "Error": "153.18 ns", - "StdDev": "135.79 ns", - "Gen0": "1.2207", - "Gen1": "-", + "Mean": "10,702.7 ns", + "Error": "64.66 ns", + "StdDev": "57.32 ns", + "Gen0": "1.2360", + "Gen1": "0.0305", "Allocated": "20.31 KB" }, { "Method": "'FakeItEasy (Multiple)'", - "Mean": "8,207.8 ns", - "Error": "149.09 ns", - "StdDev": "139.46 ns", - "Gen0": "0.6714", - "Gen1": "0.0610", + "Mean": "6,901.6 ns", + "Error": "112.81 ns", + "StdDev": "105.52 ns", + "Gen0": "0.7095", + "Gen1": "0.0153", "Allocated": "11.71 KB" } ], "Verification": [ { "Method": "TUnit.Mocks", - "Mean": "748.50 ns", - "Error": "8.762 ns", - "StdDev": "8.196 ns", + "Mean": "733.68 ns", + "Error": "13.840 ns", + "StdDev": "12.946 ns", "Gen0": "0.1774", "Gen1": "0.0010", "Allocated": "2968 B" }, { "Method": "Imposter", - "Mean": "697.96 ns", - "Error": "8.708 ns", - "StdDev": "8.145 ns", + "Mean": "693.60 ns", + "Error": "9.312 ns", + "StdDev": "8.710 ns", "Gen0": "0.2794", "Gen1": "0.0038", "Allocated": "4688 B" }, { "Method": "Mockolate", - "Mean": "409.36 ns", - "Error": "4.167 ns", - "StdDev": "3.898 ns", + "Mean": "409.47 ns", + "Error": "5.374 ns", + "StdDev": "5.027 ns", "Gen0": "0.1335", "Gen1": "0.0005", "Allocated": "2240 B" }, { "Method": "Moq", - "Mean": "244,163.13 ns", - "Error": "1,858.746 ns", - "StdDev": "1,738.672 ns", + "Mean": "346,315.18 ns", + "Error": "1,744.817 ns", + "StdDev": "1,457.001 ns", "Gen0": "0.9766", - "Gen1": "0.4883", - "Allocated": "24324 B" + "Gen1": "-", + "Allocated": "24325 B" }, { "Method": "NSubstitute", - "Mean": "5,962.74 ns", - "Error": "84.536 ns", - "StdDev": "79.075 ns", - "Gen0": "0.5951", - "Gen1": "0.0076", + "Mean": "6,314.81 ns", + "Error": "124.442 ns", + "StdDev": "116.403 ns", + "Gen0": "0.5493", + "Gen1": "-", "Allocated": "10064 B" }, { "Method": "FakeItEasy", - "Mean": "6,663.36 ns", - "Error": "115.716 ns", - "StdDev": "108.241 ns", + "Mean": "7,314.49 ns", + "Error": "126.101 ns", + "StdDev": "111.785 ns", "Gen0": "0.6409", "Gen1": "0.0153", "Allocated": "10722 B" }, { "Method": "'TUnit.Mocks (Never)'", - "Mean": "52.69 ns", - "Error": "0.430 ns", - "StdDev": "0.402 ns", + "Mean": "48.95 ns", + "Error": "0.713 ns", + "StdDev": "0.667 ns", "Gen0": "0.0181", "Gen1": "-", "Allocated": "304 B" }, { "Method": "'Imposter (Never)'", - "Mean": "330.54 ns", - "Error": "6.382 ns", - "StdDev": "5.658 ns", + "Mean": "333.70 ns", + "Error": "6.365 ns", + "StdDev": "6.537 ns", "Gen0": "0.1431", "Gen1": "0.0010", "Allocated": "2400 B" }, { "Method": "'Mockolate (Never)'", - "Mean": "246.75 ns", - "Error": "2.633 ns", - "StdDev": "2.463 ns", + "Mean": "255.13 ns", + "Error": "5.104 ns", + "StdDev": "7.155 ns", "Gen0": "0.0739", "Gen1": "-", "Allocated": "1240 B" }, { "Method": "'Moq (Never)'", - "Mean": "63,093.83 ns", - "Error": "340.587 ns", - "StdDev": "284.406 ns", - "Gen0": "0.3662", - "Gen1": "0.2441", - "Allocated": "6925 B" + "Mean": "89,610.75 ns", + "Error": "618.847 ns", + "StdDev": "548.592 ns", + "Gen0": "0.2441", + "Gen1": "-", + "Allocated": "7030 B" }, { "Method": "'NSubstitute (Never)'", - "Mean": "3,480.90 ns", - "Error": "61.830 ns", - "StdDev": "54.810 ns", + "Mean": "3,618.16 ns", + "Error": "47.208 ns", + "StdDev": "44.158 ns", "Gen0": "0.4234", "Gen1": "0.0038", "Allocated": "7088 B" }, { "Method": "'FakeItEasy (Never)'", - "Mean": "3,346.73 ns", - "Error": "63.758 ns", - "StdDev": "62.618 ns", + "Mean": "3,589.47 ns", + "Error": "71.324 ns", + "StdDev": "84.906 ns", "Gen0": "0.3052", "Gen1": "0.0153", "Allocated": "5210 B" }, { "Method": "'TUnit.Mocks (Multiple)'", - "Mean": "1,268.13 ns", - "Error": "15.355 ns", - "StdDev": "14.363 ns", + "Mean": "1,284.07 ns", + "Error": "25.338 ns", + "StdDev": "26.021 ns", "Gen0": "0.2613", "Gen1": "0.0019", "Allocated": "4384 B" }, { "Method": "'Imposter (Multiple)'", - "Mean": "1,800.60 ns", - "Error": "35.585 ns", - "StdDev": "39.552 ns", + "Mean": "1,765.97 ns", + "Error": "35.057 ns", + "StdDev": "36.001 ns", "Gen0": "0.6676", "Gen1": "0.0210", "Allocated": "11192 B" }, { "Method": "'Mockolate (Multiple)'", - "Mean": "1,240.47 ns", - "Error": "18.198 ns", - "StdDev": "14.208 ns", + "Mean": "1,169.10 ns", + "Error": "15.594 ns", + "StdDev": "14.587 ns", "Gen0": "0.3204", "Gen1": "0.0038", "Allocated": "5376 B" }, { "Method": "'Moq (Multiple)'", - "Mean": "350,159.67 ns", - "Error": "3,407.180 ns", - "StdDev": "3,020.376 ns", + "Mean": "477,079.81 ns", + "Error": "2,965.717 ns", + "StdDev": "2,476.508 ns", "Gen0": "1.9531", "Gen1": "0.9766", - "Allocated": "34811 B" + "Allocated": "34699 B" }, { "Method": "'NSubstitute (Multiple)'", - "Mean": "10,585.18 ns", - "Error": "161.694 ns", - "StdDev": "151.248 ns", - "Gen0": "0.9918", - "Gen1": "0.0153", - "Allocated": "16762 B" + "Mean": "11,914.00 ns", + "Error": "155.887 ns", + "StdDev": "145.816 ns", + "Gen0": "0.9766", + "Gen1": "-", + "Allocated": "16929 B" }, { "Method": "'FakeItEasy (Multiple)'", - "Mean": "12,068.17 ns", - "Error": "229.802 ns", - "StdDev": "245.885 ns", + "Mean": "13,949.65 ns", + "Error": "231.537 ns", + "StdDev": "205.251 ns", "Gen0": "1.0986", - "Gen1": "0.0610", - "Allocated": "19232 B" + "Gen1": "-", + "Allocated": "19233 B" } ] }, "stats": { "categoryCount": 6, "totalBenchmarks": 78, - "lastUpdated": "2026-05-23T03:25:20.859Z" + "lastUpdated": "2026-05-24T03:32:03.972Z" } } \ No newline at end of file diff --git a/docs/static/benchmarks/mocks/summary.json b/docs/static/benchmarks/mocks/summary.json index b2405e27f2..2d46869a9b 100644 --- a/docs/static/benchmarks/mocks/summary.json +++ b/docs/static/benchmarks/mocks/summary.json @@ -7,7 +7,7 @@ "Setup", "Verification" ], - "timestamp": "2026-05-23", + "timestamp": "2026-05-24", "environment": "Ubuntu Latest • .NET SDK 10.0.300", "libraries": [ "TUnit.Mocks",