diff --git a/docs/docs/benchmarks/mocks/Callback.md b/docs/docs/benchmarks/mocks/Callback.md index 95b6b56d8f..2a6b9cba65 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-05** from the latest CI run. +This benchmark was automatically generated on **2026-05-06** from the latest CI run. **Environment:** Ubuntu Latest • .NET SDK 10.0.203 ::: @@ -18,12 +18,12 @@ Callback registration and execution: | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **TUnit.Mocks** | 731.1 ns | 10.87 ns | 10.17 ns | 2.98 KB | -| Imposter | 542.4 ns | 6.50 ns | 6.08 ns | 2.66 KB | -| Mockolate | 431.7 ns | 3.82 ns | 3.19 ns | 1.89 KB | -| Moq | 140,551.6 ns | 2,108.15 ns | 1,971.96 ns | 13.29 KB | -| NSubstitute | 4,399.2 ns | 47.69 ns | 44.61 ns | 7.93 KB | -| FakeItEasy | 5,226.8 ns | 13.69 ns | 11.43 ns | 7.43 KB | +| **TUnit.Mocks** | 611.7 ns | 3.24 ns | 2.87 ns | 2.98 KB | +| Imposter | 448.0 ns | 0.87 ns | 0.68 ns | 2.66 KB | +| Mockolate | 354.2 ns | 7.05 ns | 9.88 ns | 1.89 KB | +| Moq | 180,351.2 ns | 550.15 ns | 514.61 ns | 13.14 KB | +| NSubstitute | 4,464.3 ns | 20.77 ns | 18.41 ns | 7.93 KB | +| FakeItEasy | 5,063.1 ns | 21.07 ns | 19.71 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 --> 168662 - bar [731.1, 542.4, 431.7, 140551.6, 4399.2, 5226.8] + y-axis "Time (ns)" 0 --> 216422 + bar [611.7, 448, 354.2, 180351.2, 4464.3, 5063.1] ``` --- @@ -59,12 +59,12 @@ xychart-beta | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **TUnit.Mocks** | 852.8 ns | 8.96 ns | 8.38 ns | 3.06 KB | -| Imposter | 633.5 ns | 11.50 ns | 10.76 ns | 2.82 KB | -| Mockolate | 500.8 ns | 7.06 ns | 6.26 ns | 1.94 KB | -| Moq | 153,428.6 ns | 1,851.95 ns | 1,732.31 ns | 13.75 KB | -| NSubstitute | 5,095.5 ns | 16.26 ns | 13.58 ns | 8.53 KB | -| FakeItEasy | 6,588.3 ns | 28.39 ns | 26.55 ns | 9.26 KB | +| **TUnit.Mocks** | 706.7 ns | 1.87 ns | 1.75 ns | 3.06 KB | +| Imposter | 512.7 ns | 1.75 ns | 1.64 ns | 2.82 KB | +| Mockolate | 392.2 ns | 1.45 ns | 1.13 ns | 1.94 KB | +| Moq | 189,124.1 ns | 1,331.75 ns | 1,180.56 ns | 13.73 KB | +| NSubstitute | 5,249.4 ns | 81.66 ns | 72.39 ns | 8.53 KB | +| FakeItEasy | 6,283.3 ns | 81.24 ns | 75.99 ns | 9.4 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 --> 184115 - bar [852.8, 633.5, 500.8, 153428.6, 5095.5, 6588.3] + y-axis "Time (ns)" 0 --> 226949 + bar [706.7, 512.7, 392.2, 189124.1, 5249.4, 6283.3] ``` ## 🎯 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-05T03:26:21.616Z* +*Last generated: 2026-05-06T03:25:44.139Z* diff --git a/docs/docs/benchmarks/mocks/CombinedWorkflow.md b/docs/docs/benchmarks/mocks/CombinedWorkflow.md index 18eac1dff8..c78b8c072a 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-05** from the latest CI run. +This benchmark was automatically generated on **2026-05-06** from the latest CI run. **Environment:** Ubuntu Latest • .NET SDK 10.0.203 ::: @@ -18,12 +18,12 @@ Full workflow: create → setup → invoke → verify: | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **TUnit.Mocks** | 1.806 μs | 0.0310 μs | 0.0275 μs | 5.8 KB | -| Imposter | 2.780 μs | 0.0407 μs | 0.0360 μs | 15.71 KB | -| Mockolate | 2.198 μs | 0.0107 μs | 0.0095 μs | 8.61 KB | -| Moq | 335.132 μs | 6.6715 μs | 11.5081 μs | 36.46 KB | -| NSubstitute | 16.133 μs | 0.0811 μs | 0.0719 μs | 26.72 KB | -| FakeItEasy | 15.681 μs | 0.2330 μs | 0.2066 μs | 25.52 KB | +| **TUnit.Mocks** | 1.941 μs | 0.0141 μs | 0.0132 μs | 5.8 KB | +| Imposter | 3.112 μs | 0.0617 μs | 0.0633 μs | 15.71 KB | +| Mockolate | 2.406 μs | 0.0264 μs | 0.0247 μs | 8.61 KB | +| Moq | 313.029 μs | 1.5935 μs | 1.4126 μs | 36.33 KB | +| NSubstitute | 17.050 μs | 0.0795 μs | 0.0621 μs | 26.72 KB | +| FakeItEasy | 17.629 μs | 0.0694 μs | 0.0649 μs | 25.61 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 --> 403 - bar [1.806, 2.78, 2.198, 335.132, 16.133, 15.681] + y-axis "Time (μs)" 0 --> 376 + bar [1.941, 3.112, 2.406, 313.029, 17.05, 17.629] ``` ## 🎯 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-05T03:26:21.616Z* +*Last generated: 2026-05-06T03:25:44.139Z* diff --git a/docs/docs/benchmarks/mocks/Invocation.md b/docs/docs/benchmarks/mocks/Invocation.md index f9fa776447..a012ede885 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-05** from the latest CI run. +This benchmark was automatically generated on **2026-05-06** from the latest CI run. **Environment:** Ubuntu Latest • .NET SDK 10.0.203 ::: @@ -18,12 +18,12 @@ Calling methods on mock objects: | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **TUnit.Mocks** | 254.6 ns | 62.89 ns | 3.45 ns | 120 B | -| Imposter | 315.1 ns | 114.14 ns | 6.26 ns | 168 B | -| Mockolate | 116.6 ns | 38.32 ns | 2.10 ns | 84 B | -| Moq | 896.3 ns | 372.60 ns | 20.42 ns | 376 B | -| NSubstitute | 809.4 ns | 676.82 ns | 37.10 ns | 304 B | -| FakeItEasy | 1,784.0 ns | 559.06 ns | 30.64 ns | 944 B | +| **TUnit.Mocks** | 233.02 ns | 77.76 ns | 4.262 ns | 120 B | +| Imposter | 267.71 ns | 53.17 ns | 2.915 ns | 168 B | +| Mockolate | 92.02 ns | 20.98 ns | 1.150 ns | 84 B | +| Moq | 713.40 ns | 260.71 ns | 14.290 ns | 376 B | +| NSubstitute | 673.83 ns | 142.09 ns | 7.789 ns | 360 B | +| FakeItEasy | 1,531.74 ns | 376.17 ns | 20.619 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 --> 2141 - bar [254.6, 315.1, 116.6, 896.3, 809.4, 1784] + y-axis "Time (ns)" 0 --> 1839 + bar [233.02, 267.71, 92.02, 713.4, 673.83, 1531.74] ``` --- @@ -59,12 +59,12 @@ xychart-beta | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **TUnit.Mocks** | 160.5 ns | 62.51 ns | 3.43 ns | 88 B | -| Imposter | 320.6 ns | 145.25 ns | 7.96 ns | 168 B | -| Mockolate | 103.1 ns | 52.66 ns | 2.89 ns | 60 B | -| Moq | 599.0 ns | 816.95 ns | 44.78 ns | 296 B | -| NSubstitute | 634.5 ns | 331.35 ns | 18.16 ns | 272 B | -| FakeItEasy | 1,653.4 ns | 401.30 ns | 22.00 ns | 776 B | +| **TUnit.Mocks** | 144.21 ns | 67.99 ns | 3.727 ns | 88 B | +| Imposter | 266.34 ns | 97.99 ns | 5.371 ns | 168 B | +| Mockolate | 83.62 ns | 13.86 ns | 0.760 ns | 60 B | +| Moq | 481.25 ns | 39.23 ns | 2.150 ns | 296 B | +| NSubstitute | 589.46 ns | 63.31 ns | 3.470 ns | 272 B | +| FakeItEasy | 1,377.74 ns | 231.05 ns | 12.665 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 --> 1985 - bar [160.5, 320.6, 103.1, 599, 634.5, 1653.4] + y-axis "Time (ns)" 0 --> 1654 + bar [144.21, 266.34, 83.62, 481.25, 589.46, 1377.74] ``` --- @@ -100,12 +100,12 @@ xychart-beta | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **TUnit.Mocks** | 26,421.0 ns | 16,107.33 ns | 882.90 ns | 11936 B | -| Imposter | 31,338.6 ns | 23,761.32 ns | 1,302.44 ns | 16800 B | -| Mockolate | 11,872.1 ns | 1,713.65 ns | 93.93 ns | 8400 B | -| Moq | 84,982.1 ns | 28,250.65 ns | 1,548.51 ns | 37600 B | -| NSubstitute | 86,959.4 ns | 56,683.89 ns | 3,107.04 ns | 36448 B | -| FakeItEasy | 180,855.7 ns | 51,758.53 ns | 2,837.06 ns | 94400 B | +| **TUnit.Mocks** | 23,685.24 ns | 9,145.49 ns | 501.295 ns | 11936 B | +| Imposter | 26,672.96 ns | 730.92 ns | 40.064 ns | 16800 B | +| Mockolate | 9,008.94 ns | 1,871.82 ns | 102.601 ns | 8400 B | +| Moq | 69,538.52 ns | 9,099.66 ns | 498.783 ns | 37600 B | +| NSubstitute | 63,140.44 ns | 10,488.85 ns | 574.929 ns | 30848 B | +| FakeItEasy | 154,965.78 ns | 63,324.58 ns | 3,471.034 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 --> 217027 - bar [26421, 31338.6, 11872.1, 84982.1, 86959.4, 180855.7] + y-axis "Time (ns)" 0 --> 185959 + bar [23685.24, 26672.96, 9008.94, 69538.52, 63140.44, 154965.78] ``` ## 🎯 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-05T03:26:21.616Z* +*Last generated: 2026-05-06T03:25:44.139Z* diff --git a/docs/docs/benchmarks/mocks/MockCreation.md b/docs/docs/benchmarks/mocks/MockCreation.md index ec28af2b32..046b5298da 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-05** from the latest CI run. +This benchmark was automatically generated on **2026-05-06** from the latest CI run. **Environment:** Ubuntu Latest • .NET SDK 10.0.203 ::: @@ -18,12 +18,12 @@ Mock instance creation performance: | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **TUnit.Mocks** | 27.84 ns | 0.173 ns | 0.153 ns | 192 B | -| Imposter | 89.08 ns | 0.762 ns | 0.676 ns | 440 B | -| Mockolate | 59.71 ns | 1.103 ns | 1.617 ns | 424 B | -| Moq | 1,313.80 ns | 14.780 ns | 13.825 ns | 2048 B | -| NSubstitute | 1,846.47 ns | 28.760 ns | 26.903 ns | 5000 B | -| FakeItEasy | 1,692.18 ns | 31.541 ns | 29.504 ns | 2715 B | +| **TUnit.Mocks** | 27.66 ns | 0.617 ns | 1.175 ns | 192 B | +| Imposter | 103.11 ns | 1.050 ns | 0.931 ns | 440 B | +| Mockolate | 65.91 ns | 0.488 ns | 0.456 ns | 424 B | +| Moq | 1,305.63 ns | 25.930 ns | 24.255 ns | 2048 B | +| NSubstitute | 1,879.29 ns | 11.555 ns | 10.243 ns | 5000 B | +| FakeItEasy | 1,909.70 ns | 29.814 ns | 27.888 ns | 2715 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 --> 2216 - bar [27.84, 89.08, 59.71, 1313.8, 1846.47, 1692.18] + y-axis "Time (ns)" 0 --> 2292 + bar [27.66, 103.11, 65.91, 1305.63, 1879.29, 1909.7] ``` --- @@ -59,12 +59,12 @@ xychart-beta | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **TUnit.Mocks** | 24.98 ns | 0.032 ns | 0.025 ns | 192 B | -| Imposter | 138.42 ns | 0.260 ns | 0.231 ns | 696 B | -| Mockolate | 58.65 ns | 0.333 ns | 0.312 ns | 456 B | -| Moq | 1,319.41 ns | 7.614 ns | 7.122 ns | 1912 B | -| NSubstitute | 1,905.74 ns | 13.721 ns | 12.835 ns | 5000 B | -| FakeItEasy | 1,790.17 ns | 34.440 ns | 36.851 ns | 2715 B | +| **TUnit.Mocks** | 27.86 ns | 0.096 ns | 0.080 ns | 192 B | +| Imposter | 162.90 ns | 0.636 ns | 0.595 ns | 696 B | +| Mockolate | 68.79 ns | 0.312 ns | 0.292 ns | 456 B | +| Moq | 1,326.69 ns | 19.780 ns | 18.502 ns | 1912 B | +| NSubstitute | 1,863.52 ns | 15.441 ns | 14.443 ns | 5000 B | +| FakeItEasy | 1,811.12 ns | 12.890 ns | 10.764 ns | 2715 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 --> 2287 - bar [24.98, 138.42, 58.65, 1319.41, 1905.74, 1790.17] + y-axis "Time (ns)" 0 --> 2237 + bar [27.86, 162.9, 68.79, 1326.69, 1863.52, 1811.12] ``` ## 🎯 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-05T03:26:21.616Z* +*Last generated: 2026-05-06T03:25:44.139Z* diff --git a/docs/docs/benchmarks/mocks/Setup.md b/docs/docs/benchmarks/mocks/Setup.md index 285b438104..b30d59f22b 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-05** from the latest CI run. +This benchmark was automatically generated on **2026-05-06** from the latest CI run. **Environment:** Ubuntu Latest • .NET SDK 10.0.203 ::: @@ -18,12 +18,12 @@ Mock behavior configuration (returns, matchers): | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **TUnit.Mocks** | 362.5 ns | 5.62 ns | 4.98 ns | 2.01 KB | -| Imposter | 668.3 ns | 13.36 ns | 19.58 ns | 6.12 KB | -| Mockolate | 298.6 ns | 5.79 ns | 5.41 ns | 1.68 KB | -| Moq | 241,209.7 ns | 1,658.73 ns | 1,470.42 ns | 28.66 KB | -| NSubstitute | 4,431.4 ns | 42.78 ns | 40.02 ns | 9.01 KB | -| FakeItEasy | 5,799.6 ns | 111.25 ns | 136.62 ns | 10.45 KB | +| **TUnit.Mocks** | 420.4 ns | 3.42 ns | 3.20 ns | 2.01 KB | +| Imposter | 761.4 ns | 10.18 ns | 9.53 ns | 6.12 KB | +| Mockolate | 361.2 ns | 7.15 ns | 9.79 ns | 1.68 KB | +| Moq | 426,086.4 ns | 1,616.95 ns | 1,512.49 ns | 28.69 KB | +| NSubstitute | 5,499.1 ns | 78.07 ns | 73.02 ns | 9.01 KB | +| FakeItEasy | 8,184.3 ns | 100.19 ns | 88.82 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 --> 289452 - bar [362.5, 668.3, 298.6, 241209.7, 4431.4, 5799.6] + y-axis "Time (ns)" 0 --> 511304 + bar [420.4, 761.4, 361.2, 426086.4, 5499.1, 8184.3] ``` --- @@ -59,12 +59,12 @@ xychart-beta | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **TUnit.Mocks** | 514.8 ns | 10.15 ns | 13.54 ns | 2.59 KB | -| Imposter | 1,056.8 ns | 20.14 ns | 21.55 ns | 10.59 KB | -| Mockolate | 537.1 ns | 6.88 ns | 6.43 ns | 2.82 KB | -| Moq | 68,570.5 ns | 406.55 ns | 380.29 ns | 16.53 KB | -| NSubstitute | 8,364.1 ns | 103.42 ns | 96.74 ns | 20.5 KB | -| FakeItEasy | 5,147.8 ns | 41.71 ns | 32.56 ns | 11.71 KB | +| **TUnit.Mocks** | 603.1 ns | 6.26 ns | 5.55 ns | 2.59 KB | +| Imposter | 1,351.6 ns | 25.99 ns | 25.53 ns | 10.59 KB | +| Mockolate | 603.6 ns | 3.16 ns | 2.95 ns | 2.82 KB | +| Moq | 112,461.1 ns | 464.25 ns | 434.26 ns | 16.53 KB | +| NSubstitute | 11,790.2 ns | 90.50 ns | 80.23 ns | 20.31 KB | +| FakeItEasy | 7,663.9 ns | 78.05 ns | 65.17 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 --> 82285 - bar [514.8, 1056.8, 537.1, 68570.5, 8364.1, 5147.8] + y-axis "Time (ns)" 0 --> 134954 + bar [603.1, 1351.6, 603.6, 112461.1, 11790.2, 7663.9] ``` ## 🎯 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-05T03:26:21.616Z* +*Last generated: 2026-05-06T03:25:44.139Z* diff --git a/docs/docs/benchmarks/mocks/Verification.md b/docs/docs/benchmarks/mocks/Verification.md index f14edc7190..cda5c6d0df 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-05** from the latest CI run. +This benchmark was automatically generated on **2026-05-06** from the latest CI run. **Environment:** Ubuntu Latest • .NET SDK 10.0.203 ::: @@ -18,12 +18,12 @@ Verifying mock method calls: | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **TUnit.Mocks** | 714.61 ns | 5.465 ns | 5.112 ns | 2864 B | -| Imposter | 664.96 ns | 3.310 ns | 2.764 ns | 4688 B | -| Mockolate | 402.97 ns | 1.441 ns | 1.348 ns | 2224 B | -| Moq | 236,931.26 ns | 1,505.857 ns | 1,334.903 ns | 24324 B | -| NSubstitute | 5,970.47 ns | 59.028 ns | 55.215 ns | 10064 B | -| FakeItEasy | 6,607.76 ns | 126.499 ns | 118.327 ns | 10722 B | +| **TUnit.Mocks** | 692.20 ns | 12.586 ns | 11.773 ns | 2864 B | +| Imposter | 743.98 ns | 13.959 ns | 13.710 ns | 4688 B | +| Mockolate | 434.71 ns | 7.021 ns | 6.567 ns | 2224 B | +| Moq | 345,187.52 ns | 1,881.825 ns | 1,668.189 ns | 24325 B | +| NSubstitute | 6,509.70 ns | 114.123 ns | 106.751 ns | 10064 B | +| FakeItEasy | 7,584.79 ns | 42.067 ns | 39.350 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 --> 284318 - bar [714.61, 664.96, 402.97, 236931.26, 5970.47, 6607.76] + y-axis "Time (ns)" 0 --> 414226 + bar [692.2, 743.98, 434.71, 345187.52, 6509.7, 7584.79] ``` --- @@ -59,12 +59,12 @@ xychart-beta | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **TUnit.Mocks** | 54.55 ns | 0.669 ns | 0.593 ns | 304 B | -| Imposter | 358.76 ns | 6.906 ns | 7.092 ns | 2400 B | -| Mockolate | 264.08 ns | 2.023 ns | 1.892 ns | 1240 B | -| Moq | 64,508.90 ns | 412.242 ns | 365.442 ns | 7037 B | -| NSubstitute | 3,563.08 ns | 67.991 ns | 66.777 ns | 7088 B | -| FakeItEasy | 3,376.02 ns | 21.737 ns | 20.333 ns | 5210 B | +| **TUnit.Mocks** | 52.59 ns | 0.945 ns | 1.050 ns | 304 B | +| Imposter | 333.44 ns | 6.502 ns | 9.929 ns | 2400 B | +| Mockolate | 242.96 ns | 4.825 ns | 4.739 ns | 1240 B | +| Moq | 88,636.42 ns | 299.264 ns | 265.289 ns | 6918 B | +| NSubstitute | 3,716.60 ns | 42.887 ns | 40.116 ns | 7088 B | +| FakeItEasy | 3,666.47 ns | 72.521 ns | 77.596 ns | 5209 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 --> 77411 - bar [54.55, 358.76, 264.08, 64508.9, 3563.08, 3376.02] + y-axis "Time (ns)" 0 --> 106364 + bar [52.59, 333.44, 242.96, 88636.42, 3716.6, 3666.47] ``` --- @@ -100,12 +100,12 @@ xychart-beta | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **TUnit.Mocks** | 1,166.26 ns | 12.320 ns | 11.524 ns | 4176 B | -| Imposter | 1,863.59 ns | 36.946 ns | 103.602 ns | 11192 B | -| Mockolate | 1,182.54 ns | 22.667 ns | 49.754 ns | 5408 B | -| Moq | 346,679.12 ns | 2,333.038 ns | 2,182.325 ns | 34699 B | -| NSubstitute | 10,394.53 ns | 65.161 ns | 60.952 ns | 16762 B | -| FakeItEasy | 11,620.16 ns | 115.668 ns | 108.196 ns | 19232 B | +| **TUnit.Mocks** | 1,233.32 ns | 16.516 ns | 15.449 ns | 4176 B | +| Imposter | 1,897.47 ns | 34.183 ns | 31.975 ns | 11192 B | +| Mockolate | 1,192.00 ns | 23.634 ns | 41.392 ns | 5408 B | +| Moq | 467,825.85 ns | 2,972.337 ns | 2,780.326 ns | 34699 B | +| NSubstitute | 11,477.50 ns | 69.517 ns | 58.050 ns | 16762 B | +| FakeItEasy | 13,761.56 ns | 216.979 ns | 192.346 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 --> 416015 - bar [1166.26, 1863.59, 1182.54, 346679.12, 10394.53, 11620.16] + y-axis "Time (ns)" 0 --> 561392 + bar [1233.32, 1897.47, 1192, 467825.85, 11477.5, 13761.56] ``` ## 🎯 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-05T03:26:21.616Z* +*Last generated: 2026-05-06T03:25:44.139Z* diff --git a/docs/docs/benchmarks/mocks/index.md b/docs/docs/benchmarks/mocks/index.md index c257a722a3..47f90802ff 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-05** from the latest CI run. +These benchmarks were automatically generated on **2026-05-06** from the latest CI run. **Environment:** Ubuntu Latest • .NET SDK 10.0.203 ::: @@ -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-05T03:26:21.616Z* +*Last generated: 2026-05-06T03:25:44.139Z* diff --git a/docs/static/benchmarks/mocks/Callback.json b/docs/static/benchmarks/mocks/Callback.json index 8fe8bbe8a4..85cdd456ca 100644 --- a/docs/static/benchmarks/mocks/Callback.json +++ b/docs/static/benchmarks/mocks/Callback.json @@ -1,5 +1,5 @@ { - "timestamp": "2026-05-05T03:26:21.616Z", + "timestamp": "2026-05-06T03:25:44.139Z", "category": "Callback", "description": "Callback registration and execution", "environment": { @@ -10,111 +10,111 @@ "results": [ { "Method": "TUnit.Mocks", - "Mean": "731.1 ns", - "Error": "10.87 ns", - "StdDev": "10.17 ns", - "Gen0": "0.1211", - "Gen1": "-", + "Mean": "611.7 ns", + "Error": "3.24 ns", + "StdDev": "2.87 ns", + "Gen0": "0.1822", + "Gen1": "0.0019", "Allocated": "2.98 KB" }, { "Method": "Imposter", - "Mean": "542.4 ns", - "Error": "6.50 ns", - "StdDev": "6.08 ns", - "Gen0": "0.1078", - "Gen1": "0.0010", + "Mean": "448.0 ns", + "Error": "0.87 ns", + "StdDev": "0.68 ns", + "Gen0": "0.1626", + "Gen1": "0.0014", "Allocated": "2.66 KB" }, { "Method": "Mockolate", - "Mean": "431.7 ns", - "Error": "3.82 ns", - "StdDev": "3.19 ns", - "Gen0": "0.0768", + "Mean": "354.2 ns", + "Error": "7.05 ns", + "StdDev": "9.88 ns", + "Gen0": "0.1154", "Gen1": "0.0005", "Allocated": "1.89 KB" }, { "Method": "Moq", - "Mean": "140,551.6 ns", - "Error": "2,108.15 ns", - "StdDev": "1,971.96 ns", + "Mean": "180,351.2 ns", + "Error": "550.15 ns", + "StdDev": "514.61 ns", "Gen0": "0.4883", - "Gen1": "0.2441", - "Allocated": "13.29 KB" + "Gen1": "-", + "Allocated": "13.14 KB" }, { "Method": "NSubstitute", - "Mean": "4,399.2 ns", - "Error": "47.69 ns", - "StdDev": "44.61 ns", - "Gen0": "0.3204", + "Mean": "4,464.3 ns", + "Error": "20.77 ns", + "StdDev": "18.41 ns", + "Gen0": "0.4807", "Gen1": "0.0076", "Allocated": "7.93 KB" }, { "Method": "FakeItEasy", - "Mean": "5,226.8 ns", - "Error": "13.69 ns", - "StdDev": "11.43 ns", - "Gen0": "0.2975", - "Gen1": "0.0076", - "Allocated": "7.43 KB" + "Mean": "5,063.1 ns", + "Error": "21.07 ns", + "StdDev": "19.71 ns", + "Gen0": "0.4501", + "Gen1": "0.0153", + "Allocated": "7.44 KB" }, { "Method": "'TUnit.Mocks (with args)'", - "Mean": "852.8 ns", - "Error": "8.96 ns", - "StdDev": "8.38 ns", - "Gen0": "0.1249", - "Gen1": "0.0010", + "Mean": "706.7 ns", + "Error": "1.87 ns", + "StdDev": "1.75 ns", + "Gen0": "0.1869", + "Gen1": "0.0019", "Allocated": "3.06 KB" }, { "Method": "'Imposter (with args)'", - "Mean": "633.5 ns", - "Error": "11.50 ns", - "StdDev": "10.76 ns", - "Gen0": "0.1144", + "Mean": "512.7 ns", + "Error": "1.75 ns", + "StdDev": "1.64 ns", + "Gen0": "0.1726", "Gen1": "0.0010", "Allocated": "2.82 KB" }, { "Method": "'Mockolate (with args)'", - "Mean": "500.8 ns", - "Error": "7.06 ns", - "StdDev": "6.26 ns", - "Gen0": "0.0782", - "Gen1": "-", + "Mean": "392.2 ns", + "Error": "1.45 ns", + "StdDev": "1.13 ns", + "Gen0": "0.1183", + "Gen1": "0.0005", "Allocated": "1.94 KB" }, { "Method": "'Moq (with args)'", - "Mean": "153,428.6 ns", - "Error": "1,851.95 ns", - "StdDev": "1,732.31 ns", + "Mean": "189,124.1 ns", + "Error": "1,331.75 ns", + "StdDev": "1,180.56 ns", "Gen0": "0.4883", "Gen1": "-", - "Allocated": "13.75 KB" + "Allocated": "13.73 KB" }, { "Method": "'NSubstitute (with args)'", - "Mean": "5,095.5 ns", - "Error": "16.26 ns", - "StdDev": "13.58 ns", - "Gen0": "0.3433", - "Gen1": "0.0076", + "Mean": "5,249.4 ns", + "Error": "81.66 ns", + "StdDev": "72.39 ns", + "Gen0": "0.4883", + "Gen1": "-", "Allocated": "8.53 KB" }, { "Method": "'FakeItEasy (with args)'", - "Mean": "6,588.3 ns", - "Error": "28.39 ns", - "StdDev": "26.55 ns", - "Gen0": "0.3738", - "Gen1": "0.0153", - "Allocated": "9.26 KB" + "Mean": "6,283.3 ns", + "Error": "81.24 ns", + "StdDev": "75.99 ns", + "Gen0": "0.5493", + "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 07ac24b55b..d382bb2d79 100644 --- a/docs/static/benchmarks/mocks/CombinedWorkflow.json +++ b/docs/static/benchmarks/mocks/CombinedWorkflow.json @@ -1,5 +1,5 @@ { - "timestamp": "2026-05-05T03:26:21.616Z", + "timestamp": "2026-05-06T03:25:44.139Z", "category": "CombinedWorkflow", "description": "Full workflow: create → setup → invoke → verify", "environment": { @@ -10,57 +10,57 @@ "results": [ { "Method": "TUnit.Mocks", - "Mean": "1.806 μs", - "Error": "0.0310 μs", - "StdDev": "0.0275 μs", - "Gen0": "0.3548", - "Gen1": "0.0057", + "Mean": "1.941 μs", + "Error": "0.0141 μs", + "StdDev": "0.0132 μs", + "Gen0": "0.2365", + "Gen1": "0.0038", "Allocated": "5.8 KB" }, { "Method": "Imposter", - "Mean": "2.780 μs", - "Error": "0.0407 μs", - "StdDev": "0.0360 μs", - "Gen0": "0.9613", - "Gen1": "0.0458", + "Mean": "3.112 μs", + "Error": "0.0617 μs", + "StdDev": "0.0633 μs", + "Gen0": "0.6409", + "Gen1": "0.0267", "Allocated": "15.71 KB" }, { "Method": "Mockolate", - "Mean": "2.198 μs", - "Error": "0.0107 μs", - "StdDev": "0.0095 μs", - "Gen0": "0.5264", - "Gen1": "0.0076", + "Mean": "2.406 μs", + "Error": "0.0264 μs", + "StdDev": "0.0247 μs", + "Gen0": "0.3510", + "Gen1": "0.0038", "Allocated": "8.61 KB" }, { "Method": "Moq", - "Mean": "335.132 μs", - "Error": "6.6715 μs", - "StdDev": "11.5081 μs", - "Gen0": "1.9531", - "Gen1": "0.9766", - "Allocated": "36.46 KB" + "Mean": "313.029 μs", + "Error": "1.5935 μs", + "StdDev": "1.4126 μs", + "Gen0": "0.9766", + "Gen1": "-", + "Allocated": "36.33 KB" }, { "Method": "NSubstitute", - "Mean": "16.133 μs", - "Error": "0.0811 μs", - "StdDev": "0.0719 μs", - "Gen0": "1.6174", + "Mean": "17.050 μs", + "Error": "0.0795 μs", + "StdDev": "0.0621 μs", + "Gen0": "1.0681", "Gen1": "0.0305", "Allocated": "26.72 KB" }, { "Method": "FakeItEasy", - "Mean": "15.681 μs", - "Error": "0.2330 μs", - "StdDev": "0.2066 μs", - "Gen0": "1.4648", - "Gen1": "0.1221", - "Allocated": "25.52 KB" + "Mean": "17.629 μs", + "Error": "0.0694 μs", + "StdDev": "0.0649 μs", + "Gen0": "1.0376", + "Gen1": "0.0305", + "Allocated": "25.61 KB" } ] } \ No newline at end of file diff --git a/docs/static/benchmarks/mocks/Invocation.json b/docs/static/benchmarks/mocks/Invocation.json index 771175cbef..87a151364d 100644 --- a/docs/static/benchmarks/mocks/Invocation.json +++ b/docs/static/benchmarks/mocks/Invocation.json @@ -1,5 +1,5 @@ { - "timestamp": "2026-05-05T03:26:21.616Z", + "timestamp": "2026-05-06T03:25:44.139Z", "category": "Invocation", "description": "Calling methods on mock objects", "environment": { @@ -10,162 +10,162 @@ "results": [ { "Method": "TUnit.Mocks", - "Mean": "254.6 ns", - "Error": "62.89 ns", - "StdDev": "3.45 ns", + "Mean": "233.02 ns", + "Error": "77.76 ns", + "StdDev": "4.262 ns", "Gen0": "0.0062", "Gen1": "0.0057", "Allocated": "120 B" }, { "Method": "Imposter", - "Mean": "315.1 ns", - "Error": "114.14 ns", - "StdDev": "6.26 ns", + "Mean": "267.71 ns", + "Error": "53.17 ns", + "StdDev": "2.915 ns", "Gen0": "0.0100", "Gen1": "0.0095", "Allocated": "168 B" }, { "Method": "Mockolate", - "Mean": "116.6 ns", - "Error": "38.32 ns", - "StdDev": "2.10 ns", + "Mean": "92.02 ns", + "Error": "20.98 ns", + "StdDev": "1.150 ns", "Gen0": "0.0050", - "Gen1": "0.0048", + "Gen1": "0.0049", "Allocated": "84 B" }, { "Method": "Moq", - "Mean": "896.3 ns", - "Error": "372.60 ns", - "StdDev": "20.42 ns", + "Mean": "713.40 ns", + "Error": "260.71 ns", + "StdDev": "14.290 ns", "Gen0": "0.0219", "Gen1": "0.0210", "Allocated": "376 B" }, { "Method": "NSubstitute", - "Mean": "809.4 ns", - "Error": "676.82 ns", - "StdDev": "37.10 ns", - "Gen0": "0.0172", - "Gen1": "0.0162", - "Allocated": "304 B" + "Mean": "673.83 ns", + "Error": "142.09 ns", + "StdDev": "7.789 ns", + "Gen0": "0.0200", + "Gen1": "0.0191", + "Allocated": "360 B" }, { "Method": "FakeItEasy", - "Mean": "1,784.0 ns", - "Error": "559.06 ns", - "StdDev": "30.64 ns", - "Gen0": "0.0534", - "Gen1": "0.0496", + "Mean": "1,531.74 ns", + "Error": "376.17 ns", + "StdDev": "20.619 ns", + "Gen0": "0.0553", + "Gen1": "0.0534", "Allocated": "944 B" }, { "Method": "'TUnit.Mocks (String)'", - "Mean": "160.5 ns", - "Error": "62.51 ns", - "StdDev": "3.43 ns", + "Mean": "144.21 ns", + "Error": "67.99 ns", + "StdDev": "3.727 ns", "Gen0": "0.0048", "Gen1": "0.0045", "Allocated": "88 B" }, { "Method": "'Imposter (String)'", - "Mean": "320.6 ns", - "Error": "145.25 ns", - "StdDev": "7.96 ns", + "Mean": "266.34 ns", + "Error": "97.99 ns", + "StdDev": "5.371 ns", "Gen0": "0.0100", "Gen1": "0.0095", "Allocated": "168 B" }, { "Method": "'Mockolate (String)'", - "Mean": "103.1 ns", - "Error": "52.66 ns", - "StdDev": "2.89 ns", + "Mean": "83.62 ns", + "Error": "13.86 ns", + "StdDev": "0.760 ns", "Gen0": "0.0036", - "Gen1": "0.0033", + "Gen1": "0.0035", "Allocated": "60 B" }, { "Method": "'Moq (String)'", - "Mean": "599.0 ns", - "Error": "816.95 ns", - "StdDev": "44.78 ns", + "Mean": "481.25 ns", + "Error": "39.23 ns", + "StdDev": "2.150 ns", "Gen0": "0.0172", "Gen1": "0.0162", "Allocated": "296 B" }, { "Method": "'NSubstitute (String)'", - "Mean": "634.5 ns", - "Error": "331.35 ns", - "StdDev": "18.16 ns", + "Mean": "589.46 ns", + "Error": "63.31 ns", + "StdDev": "3.470 ns", "Gen0": "0.0153", "Gen1": "0.0143", "Allocated": "272 B" }, { "Method": "'FakeItEasy (String)'", - "Mean": "1,653.4 ns", - "Error": "401.30 ns", - "StdDev": "22.00 ns", + "Mean": "1,377.74 ns", + "Error": "231.05 ns", + "StdDev": "12.665 ns", "Gen0": "0.0458", "Gen1": "0.0439", "Allocated": "776 B" }, { "Method": "'TUnit.Mocks (100 calls)'", - "Mean": "26,421.0 ns", - "Error": "16,107.33 ns", - "StdDev": "882.90 ns", + "Mean": "23,685.24 ns", + "Error": "9,145.49 ns", + "StdDev": "501.295 ns", "Gen0": "0.6104", "Gen1": "0.5798", "Allocated": "11936 B" }, { "Method": "'Imposter (100 calls)'", - "Mean": "31,338.6 ns", - "Error": "23,761.32 ns", - "StdDev": "1,302.44 ns", + "Mean": "26,672.96 ns", + "Error": "730.92 ns", + "StdDev": "40.064 ns", "Gen0": "0.9766", "Gen1": "0.9155", "Allocated": "16800 B" }, { "Method": "'Mockolate (100 calls)'", - "Mean": "11,872.1 ns", - "Error": "1,713.65 ns", - "StdDev": "93.93 ns", + "Mean": "9,008.94 ns", + "Error": "1,871.82 ns", + "StdDev": "102.601 ns", "Gen0": "0.4883", "Gen1": "0.4730", "Allocated": "8400 B" }, { "Method": "'Moq (100 calls)'", - "Mean": "84,982.1 ns", - "Error": "28,250.65 ns", - "StdDev": "1,548.51 ns", + "Mean": "69,538.52 ns", + "Error": "9,099.66 ns", + "StdDev": "498.783 ns", "Gen0": "2.1973", "Gen1": "2.0752", "Allocated": "37600 B" }, { "Method": "'NSubstitute (100 calls)'", - "Mean": "86,959.4 ns", - "Error": "56,683.89 ns", - "StdDev": "3,107.04 ns", - "Gen0": "1.9531", - "Gen1": "1.8311", - "Allocated": "36448 B" + "Mean": "63,140.44 ns", + "Error": "10,488.85 ns", + "StdDev": "574.929 ns", + "Gen0": "1.7090", + "Gen1": "1.5869", + "Allocated": "30848 B" }, { "Method": "'FakeItEasy (100 calls)'", - "Mean": "180,855.7 ns", - "Error": "51,758.53 ns", - "StdDev": "2,837.06 ns", + "Mean": "154,965.78 ns", + "Error": "63,324.58 ns", + "StdDev": "3,471.034 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 1b737081f6..92f5ff319e 100644 --- a/docs/static/benchmarks/mocks/MockCreation.json +++ b/docs/static/benchmarks/mocks/MockCreation.json @@ -1,5 +1,5 @@ { - "timestamp": "2026-05-05T03:26:21.616Z", + "timestamp": "2026-05-06T03:25:44.139Z", "category": "MockCreation", "description": "Mock instance creation performance", "environment": { @@ -10,10 +10,9 @@ "results": [ { "Method": "TUnit.Mocks", - "Mean": "27.84 ns", - "Error": "0.173 ns", - "StdDev": "0.153 ns", - "Median": "27.77 ns", + "Mean": "27.66 ns", + "Error": "0.617 ns", + "StdDev": "1.175 ns", "Gen0": "0.0114", "Gen1": "-", "Gen2": "-", @@ -21,10 +20,9 @@ }, { "Method": "Imposter", - "Mean": "89.08 ns", - "Error": "0.762 ns", - "StdDev": "0.676 ns", - "Median": "88.91 ns", + "Mean": "103.11 ns", + "Error": "1.050 ns", + "StdDev": "0.931 ns", "Gen0": "0.0262", "Gen1": "-", "Gen2": "-", @@ -32,10 +30,9 @@ }, { "Method": "Mockolate", - "Mean": "59.71 ns", - "Error": "1.103 ns", - "StdDev": "1.617 ns", - "Median": "58.84 ns", + "Mean": "65.91 ns", + "Error": "0.488 ns", + "StdDev": "0.456 ns", "Gen0": "0.0253", "Gen1": "-", "Gen2": "-", @@ -43,10 +40,9 @@ }, { "Method": "Moq", - "Mean": "1,313.80 ns", - "Error": "14.780 ns", - "StdDev": "13.825 ns", - "Median": "1,308.87 ns", + "Mean": "1,305.63 ns", + "Error": "25.930 ns", + "StdDev": "24.255 ns", "Gen0": "0.1221", "Gen1": "-", "Gen2": "-", @@ -54,10 +50,9 @@ }, { "Method": "NSubstitute", - "Mean": "1,846.47 ns", - "Error": "28.760 ns", - "StdDev": "26.903 ns", - "Median": "1,828.86 ns", + "Mean": "1,879.29 ns", + "Error": "11.555 ns", + "StdDev": "10.243 ns", "Gen0": "0.2975", "Gen1": "0.0019", "Gen2": "-", @@ -65,10 +60,9 @@ }, { "Method": "FakeItEasy", - "Mean": "1,692.18 ns", - "Error": "31.541 ns", - "StdDev": "29.504 ns", - "Median": "1,678.80 ns", + "Mean": "1,909.70 ns", + "Error": "29.814 ns", + "StdDev": "27.888 ns", "Gen0": "0.1602", "Gen1": "0.0038", "Gen2": "0.0019", @@ -76,21 +70,19 @@ }, { "Method": "'TUnit.Mocks (Repository)'", - "Mean": "24.98 ns", - "Error": "0.032 ns", - "StdDev": "0.025 ns", - "Median": "24.98 ns", - "Gen0": "0.0115", + "Mean": "27.86 ns", + "Error": "0.096 ns", + "StdDev": "0.080 ns", + "Gen0": "0.0114", "Gen1": "-", "Gen2": "-", "Allocated": "192 B" }, { "Method": "'Imposter (Repository)'", - "Mean": "138.42 ns", - "Error": "0.260 ns", - "StdDev": "0.231 ns", - "Median": "138.43 ns", + "Mean": "162.90 ns", + "Error": "0.636 ns", + "StdDev": "0.595 ns", "Gen0": "0.0415", "Gen1": "-", "Gen2": "-", @@ -98,10 +90,9 @@ }, { "Method": "'Mockolate (Repository)'", - "Mean": "58.65 ns", - "Error": "0.333 ns", - "StdDev": "0.312 ns", - "Median": "58.53 ns", + "Mean": "68.79 ns", + "Error": "0.312 ns", + "StdDev": "0.292 ns", "Gen0": "0.0272", "Gen1": "-", "Gen2": "-", @@ -109,10 +100,9 @@ }, { "Method": "'Moq (Repository)'", - "Mean": "1,319.41 ns", - "Error": "7.614 ns", - "StdDev": "7.122 ns", - "Median": "1,316.52 ns", + "Mean": "1,326.69 ns", + "Error": "19.780 ns", + "StdDev": "18.502 ns", "Gen0": "0.1125", "Gen1": "-", "Gen2": "-", @@ -120,10 +110,9 @@ }, { "Method": "'NSubstitute (Repository)'", - "Mean": "1,905.74 ns", - "Error": "13.721 ns", - "StdDev": "12.835 ns", - "Median": "1,905.16 ns", + "Mean": "1,863.52 ns", + "Error": "15.441 ns", + "StdDev": "14.443 ns", "Gen0": "0.2975", "Gen1": "0.0019", "Gen2": "-", @@ -131,10 +120,9 @@ }, { "Method": "'FakeItEasy (Repository)'", - "Mean": "1,790.17 ns", - "Error": "34.440 ns", - "StdDev": "36.851 ns", - "Median": "1,810.66 ns", + "Mean": "1,811.12 ns", + "Error": "12.890 ns", + "StdDev": "10.764 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 01c1c4ac41..220d8e7d5f 100644 --- a/docs/static/benchmarks/mocks/Setup.json +++ b/docs/static/benchmarks/mocks/Setup.json @@ -1,5 +1,5 @@ { - "timestamp": "2026-05-05T03:26:21.616Z", + "timestamp": "2026-05-06T03:25:44.139Z", "category": "Setup", "description": "Mock behavior configuration (returns, matchers)", "environment": { @@ -10,110 +10,110 @@ "results": [ { "Method": "TUnit.Mocks", - "Mean": "362.5 ns", - "Error": "5.62 ns", - "StdDev": "4.98 ns", + "Mean": "420.4 ns", + "Error": "3.42 ns", + "StdDev": "3.20 ns", "Gen0": "0.1225", "Gen1": "0.0005", "Allocated": "2.01 KB" }, { "Method": "Imposter", - "Mean": "668.3 ns", - "Error": "13.36 ns", - "StdDev": "19.58 ns", + "Mean": "761.4 ns", + "Error": "10.18 ns", + "StdDev": "9.53 ns", "Gen0": "0.3738", "Gen1": "0.0076", "Allocated": "6.12 KB" }, { "Method": "Mockolate", - "Mean": "298.6 ns", - "Error": "5.79 ns", - "StdDev": "5.41 ns", + "Mean": "361.2 ns", + "Error": "7.15 ns", + "StdDev": "9.79 ns", "Gen0": "0.1025", "Gen1": "0.0005", "Allocated": "1.68 KB" }, { "Method": "Moq", - "Mean": "241,209.7 ns", - "Error": "1,658.73 ns", - "StdDev": "1,470.42 ns", - "Gen0": "1.4648", - "Gen1": "0.9766", - "Allocated": "28.66 KB" + "Mean": "426,086.4 ns", + "Error": "1,616.95 ns", + "StdDev": "1,512.49 ns", + "Gen0": "0.9766", + "Gen1": "-", + "Allocated": "28.69 KB" }, { "Method": "NSubstitute", - "Mean": "4,431.4 ns", - "Error": "42.78 ns", - "StdDev": "40.02 ns", + "Mean": "5,499.1 ns", + "Error": "78.07 ns", + "StdDev": "73.02 ns", "Gen0": "0.5493", - "Gen1": "-", + "Gen1": "0.0076", "Allocated": "9.01 KB" }, { "Method": "FakeItEasy", - "Mean": "5,799.6 ns", - "Error": "111.25 ns", - "StdDev": "136.62 ns", - "Gen0": "0.6332", - "Gen1": "0.0153", + "Mean": "8,184.3 ns", + "Error": "100.19 ns", + "StdDev": "88.82 ns", + "Gen0": "0.6104", + "Gen1": "0.0610", "Allocated": "10.45 KB" }, { "Method": "'TUnit.Mocks (Multiple)'", - "Mean": "514.8 ns", - "Error": "10.15 ns", - "StdDev": "13.54 ns", + "Mean": "603.1 ns", + "Error": "6.26 ns", + "StdDev": "5.55 ns", "Gen0": "0.1574", "Gen1": "0.0010", "Allocated": "2.59 KB" }, { "Method": "'Imposter (Multiple)'", - "Mean": "1,056.8 ns", - "Error": "20.14 ns", - "StdDev": "21.55 ns", + "Mean": "1,351.6 ns", + "Error": "25.99 ns", + "StdDev": "25.53 ns", "Gen0": "0.6485", "Gen1": "0.0248", "Allocated": "10.59 KB" }, { "Method": "'Mockolate (Multiple)'", - "Mean": "537.1 ns", - "Error": "6.88 ns", - "StdDev": "6.43 ns", + "Mean": "603.6 ns", + "Error": "3.16 ns", + "StdDev": "2.95 ns", "Gen0": "0.1726", "Gen1": "0.0010", "Allocated": "2.82 KB" }, { "Method": "'Moq (Multiple)'", - "Mean": "68,570.5 ns", - "Error": "406.55 ns", - "StdDev": "380.29 ns", + "Mean": "112,461.1 ns", + "Error": "464.25 ns", + "StdDev": "434.26 ns", "Gen0": "0.9766", "Gen1": "0.7324", "Allocated": "16.53 KB" }, { "Method": "'NSubstitute (Multiple)'", - "Mean": "8,364.1 ns", - "Error": "103.42 ns", - "StdDev": "96.74 ns", + "Mean": "11,790.2 ns", + "Error": "90.50 ns", + "StdDev": "80.23 ns", "Gen0": "1.2207", "Gen1": "-", - "Allocated": "20.5 KB" + "Allocated": "20.31 KB" }, { "Method": "'FakeItEasy (Multiple)'", - "Mean": "5,147.8 ns", - "Error": "41.71 ns", - "StdDev": "32.56 ns", - "Gen0": "0.7019", - "Gen1": "0.0305", + "Mean": "7,663.9 ns", + "Error": "78.05 ns", + "StdDev": "65.17 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 1d0fdb1681..9b78830355 100644 --- a/docs/static/benchmarks/mocks/Verification.json +++ b/docs/static/benchmarks/mocks/Verification.json @@ -1,5 +1,5 @@ { - "timestamp": "2026-05-05T03:26:21.616Z", + "timestamp": "2026-05-06T03:25:44.139Z", "category": "Verification", "description": "Verifying mock method calls", "environment": { @@ -10,183 +10,165 @@ "results": [ { "Method": "TUnit.Mocks", - "Mean": "714.61 ns", - "Error": "5.465 ns", - "StdDev": "5.112 ns", - "Median": "716.47 ns", + "Mean": "692.20 ns", + "Error": "12.586 ns", + "StdDev": "11.773 ns", "Gen0": "0.1707", "Gen1": "0.0010", "Allocated": "2864 B" }, { "Method": "Imposter", - "Mean": "664.96 ns", - "Error": "3.310 ns", - "StdDev": "2.764 ns", - "Median": "663.74 ns", + "Mean": "743.98 ns", + "Error": "13.959 ns", + "StdDev": "13.710 ns", "Gen0": "0.2794", "Gen1": "0.0038", "Allocated": "4688 B" }, { "Method": "Mockolate", - "Mean": "402.97 ns", - "Error": "1.441 ns", - "StdDev": "1.348 ns", - "Median": "403.29 ns", + "Mean": "434.71 ns", + "Error": "7.021 ns", + "StdDev": "6.567 ns", "Gen0": "0.1326", "Gen1": "0.0005", "Allocated": "2224 B" }, { "Method": "Moq", - "Mean": "236,931.26 ns", - "Error": "1,505.857 ns", - "StdDev": "1,334.903 ns", - "Median": "236,733.27 ns", + "Mean": "345,187.52 ns", + "Error": "1,881.825 ns", + "StdDev": "1,668.189 ns", "Gen0": "0.9766", - "Gen1": "0.4883", - "Allocated": "24324 B" + "Gen1": "-", + "Allocated": "24325 B" }, { "Method": "NSubstitute", - "Mean": "5,970.47 ns", - "Error": "59.028 ns", - "StdDev": "55.215 ns", - "Median": "5,971.10 ns", - "Gen0": "0.5951", - "Gen1": "0.0076", + "Mean": "6,509.70 ns", + "Error": "114.123 ns", + "StdDev": "106.751 ns", + "Gen0": "0.5493", + "Gen1": "-", "Allocated": "10064 B" }, { "Method": "FakeItEasy", - "Mean": "6,607.76 ns", - "Error": "126.499 ns", - "StdDev": "118.327 ns", - "Median": "6,567.02 ns", + "Mean": "7,584.79 ns", + "Error": "42.067 ns", + "StdDev": "39.350 ns", "Gen0": "0.6409", "Gen1": "0.0153", "Allocated": "10722 B" }, { "Method": "'TUnit.Mocks (Never)'", - "Mean": "54.55 ns", - "Error": "0.669 ns", - "StdDev": "0.593 ns", - "Median": "54.51 ns", + "Mean": "52.59 ns", + "Error": "0.945 ns", + "StdDev": "1.050 ns", "Gen0": "0.0181", "Gen1": "-", "Allocated": "304 B" }, { "Method": "'Imposter (Never)'", - "Mean": "358.76 ns", - "Error": "6.906 ns", - "StdDev": "7.092 ns", - "Median": "358.52 ns", + "Mean": "333.44 ns", + "Error": "6.502 ns", + "StdDev": "9.929 ns", "Gen0": "0.1431", "Gen1": "0.0010", "Allocated": "2400 B" }, { "Method": "'Mockolate (Never)'", - "Mean": "264.08 ns", - "Error": "2.023 ns", - "StdDev": "1.892 ns", - "Median": "264.16 ns", + "Mean": "242.96 ns", + "Error": "4.825 ns", + "StdDev": "4.739 ns", "Gen0": "0.0739", "Gen1": "-", "Allocated": "1240 B" }, { "Method": "'Moq (Never)'", - "Mean": "64,508.90 ns", - "Error": "412.242 ns", - "StdDev": "365.442 ns", - "Median": "64,511.90 ns", - "Gen0": "0.3662", - "Gen1": "0.2441", - "Allocated": "7037 B" + "Mean": "88,636.42 ns", + "Error": "299.264 ns", + "StdDev": "265.289 ns", + "Gen0": "0.2441", + "Gen1": "-", + "Allocated": "6918 B" }, { "Method": "'NSubstitute (Never)'", - "Mean": "3,563.08 ns", - "Error": "67.991 ns", - "StdDev": "66.777 ns", - "Median": "3,581.50 ns", + "Mean": "3,716.60 ns", + "Error": "42.887 ns", + "StdDev": "40.116 ns", "Gen0": "0.4234", "Gen1": "0.0038", "Allocated": "7088 B" }, { "Method": "'FakeItEasy (Never)'", - "Mean": "3,376.02 ns", - "Error": "21.737 ns", - "StdDev": "20.333 ns", - "Median": "3,377.28 ns", + "Mean": "3,666.47 ns", + "Error": "72.521 ns", + "StdDev": "77.596 ns", "Gen0": "0.3052", - "Gen1": "0.0153", - "Allocated": "5210 B" + "Gen1": "0.0305", + "Allocated": "5209 B" }, { "Method": "'TUnit.Mocks (Multiple)'", - "Mean": "1,166.26 ns", - "Error": "12.320 ns", - "StdDev": "11.524 ns", - "Median": "1,169.16 ns", + "Mean": "1,233.32 ns", + "Error": "16.516 ns", + "StdDev": "15.449 ns", "Gen0": "0.2480", "Gen1": "0.0019", "Allocated": "4176 B" }, { "Method": "'Imposter (Multiple)'", - "Mean": "1,863.59 ns", - "Error": "36.946 ns", - "StdDev": "103.602 ns", - "Median": "1,843.57 ns", + "Mean": "1,897.47 ns", + "Error": "34.183 ns", + "StdDev": "31.975 ns", "Gen0": "0.6676", "Gen1": "0.0210", "Allocated": "11192 B" }, { "Method": "'Mockolate (Multiple)'", - "Mean": "1,182.54 ns", - "Error": "22.667 ns", - "StdDev": "49.754 ns", - "Median": "1,156.49 ns", + "Mean": "1,192.00 ns", + "Error": "23.634 ns", + "StdDev": "41.392 ns", "Gen0": "0.3223", "Gen1": "0.0038", "Allocated": "5408 B" }, { "Method": "'Moq (Multiple)'", - "Mean": "346,679.12 ns", - "Error": "2,333.038 ns", - "StdDev": "2,182.325 ns", - "Median": "346,226.07 ns", + "Mean": "467,825.85 ns", + "Error": "2,972.337 ns", + "StdDev": "2,780.326 ns", "Gen0": "1.9531", "Gen1": "0.9766", "Allocated": "34699 B" }, { "Method": "'NSubstitute (Multiple)'", - "Mean": "10,394.53 ns", - "Error": "65.161 ns", - "StdDev": "60.952 ns", - "Median": "10,373.92 ns", + "Mean": "11,477.50 ns", + "Error": "69.517 ns", + "StdDev": "58.050 ns", "Gen0": "0.9918", "Gen1": "0.0153", "Allocated": "16762 B" }, { "Method": "'FakeItEasy (Multiple)'", - "Mean": "11,620.16 ns", - "Error": "115.668 ns", - "StdDev": "108.196 ns", - "Median": "11,648.87 ns", + "Mean": "13,761.56 ns", + "Error": "216.979 ns", + "StdDev": "192.346 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 e6fbbfbe9b..9b59c156ac 100644 --- a/docs/static/benchmarks/mocks/latest.json +++ b/docs/static/benchmarks/mocks/latest.json @@ -1,5 +1,5 @@ { - "timestamp": "2026-05-05T03:26:21.616Z", + "timestamp": "2026-05-06T03:25:44.139Z", "environment": { "benchmarkDotNetVersion": "BenchmarkDotNet v0.15.8, Linux Ubuntu 24.04.4 LTS (Noble Numbat)", "sdk": ".NET SDK 10.0.203", @@ -9,328 +9,328 @@ "Callback": [ { "Method": "TUnit.Mocks", - "Mean": "731.1 ns", - "Error": "10.87 ns", - "StdDev": "10.17 ns", - "Gen0": "0.1211", - "Gen1": "-", + "Mean": "611.7 ns", + "Error": "3.24 ns", + "StdDev": "2.87 ns", + "Gen0": "0.1822", + "Gen1": "0.0019", "Allocated": "2.98 KB" }, { "Method": "Imposter", - "Mean": "542.4 ns", - "Error": "6.50 ns", - "StdDev": "6.08 ns", - "Gen0": "0.1078", - "Gen1": "0.0010", + "Mean": "448.0 ns", + "Error": "0.87 ns", + "StdDev": "0.68 ns", + "Gen0": "0.1626", + "Gen1": "0.0014", "Allocated": "2.66 KB" }, { "Method": "Mockolate", - "Mean": "431.7 ns", - "Error": "3.82 ns", - "StdDev": "3.19 ns", - "Gen0": "0.0768", + "Mean": "354.2 ns", + "Error": "7.05 ns", + "StdDev": "9.88 ns", + "Gen0": "0.1154", "Gen1": "0.0005", "Allocated": "1.89 KB" }, { "Method": "Moq", - "Mean": "140,551.6 ns", - "Error": "2,108.15 ns", - "StdDev": "1,971.96 ns", + "Mean": "180,351.2 ns", + "Error": "550.15 ns", + "StdDev": "514.61 ns", "Gen0": "0.4883", - "Gen1": "0.2441", - "Allocated": "13.29 KB" + "Gen1": "-", + "Allocated": "13.14 KB" }, { "Method": "NSubstitute", - "Mean": "4,399.2 ns", - "Error": "47.69 ns", - "StdDev": "44.61 ns", - "Gen0": "0.3204", + "Mean": "4,464.3 ns", + "Error": "20.77 ns", + "StdDev": "18.41 ns", + "Gen0": "0.4807", "Gen1": "0.0076", "Allocated": "7.93 KB" }, { "Method": "FakeItEasy", - "Mean": "5,226.8 ns", - "Error": "13.69 ns", - "StdDev": "11.43 ns", - "Gen0": "0.2975", - "Gen1": "0.0076", - "Allocated": "7.43 KB" + "Mean": "5,063.1 ns", + "Error": "21.07 ns", + "StdDev": "19.71 ns", + "Gen0": "0.4501", + "Gen1": "0.0153", + "Allocated": "7.44 KB" }, { "Method": "'TUnit.Mocks (with args)'", - "Mean": "852.8 ns", - "Error": "8.96 ns", - "StdDev": "8.38 ns", - "Gen0": "0.1249", - "Gen1": "0.0010", + "Mean": "706.7 ns", + "Error": "1.87 ns", + "StdDev": "1.75 ns", + "Gen0": "0.1869", + "Gen1": "0.0019", "Allocated": "3.06 KB" }, { "Method": "'Imposter (with args)'", - "Mean": "633.5 ns", - "Error": "11.50 ns", - "StdDev": "10.76 ns", - "Gen0": "0.1144", + "Mean": "512.7 ns", + "Error": "1.75 ns", + "StdDev": "1.64 ns", + "Gen0": "0.1726", "Gen1": "0.0010", "Allocated": "2.82 KB" }, { "Method": "'Mockolate (with args)'", - "Mean": "500.8 ns", - "Error": "7.06 ns", - "StdDev": "6.26 ns", - "Gen0": "0.0782", - "Gen1": "-", + "Mean": "392.2 ns", + "Error": "1.45 ns", + "StdDev": "1.13 ns", + "Gen0": "0.1183", + "Gen1": "0.0005", "Allocated": "1.94 KB" }, { "Method": "'Moq (with args)'", - "Mean": "153,428.6 ns", - "Error": "1,851.95 ns", - "StdDev": "1,732.31 ns", + "Mean": "189,124.1 ns", + "Error": "1,331.75 ns", + "StdDev": "1,180.56 ns", "Gen0": "0.4883", "Gen1": "-", - "Allocated": "13.75 KB" + "Allocated": "13.73 KB" }, { "Method": "'NSubstitute (with args)'", - "Mean": "5,095.5 ns", - "Error": "16.26 ns", - "StdDev": "13.58 ns", - "Gen0": "0.3433", - "Gen1": "0.0076", + "Mean": "5,249.4 ns", + "Error": "81.66 ns", + "StdDev": "72.39 ns", + "Gen0": "0.4883", + "Gen1": "-", "Allocated": "8.53 KB" }, { "Method": "'FakeItEasy (with args)'", - "Mean": "6,588.3 ns", - "Error": "28.39 ns", - "StdDev": "26.55 ns", - "Gen0": "0.3738", - "Gen1": "0.0153", - "Allocated": "9.26 KB" + "Mean": "6,283.3 ns", + "Error": "81.24 ns", + "StdDev": "75.99 ns", + "Gen0": "0.5493", + "Gen1": "0.0610", + "Allocated": "9.4 KB" } ], "CombinedWorkflow": [ { "Method": "TUnit.Mocks", - "Mean": "1.806 μs", - "Error": "0.0310 μs", - "StdDev": "0.0275 μs", - "Gen0": "0.3548", - "Gen1": "0.0057", + "Mean": "1.941 μs", + "Error": "0.0141 μs", + "StdDev": "0.0132 μs", + "Gen0": "0.2365", + "Gen1": "0.0038", "Allocated": "5.8 KB" }, { "Method": "Imposter", - "Mean": "2.780 μs", - "Error": "0.0407 μs", - "StdDev": "0.0360 μs", - "Gen0": "0.9613", - "Gen1": "0.0458", + "Mean": "3.112 μs", + "Error": "0.0617 μs", + "StdDev": "0.0633 μs", + "Gen0": "0.6409", + "Gen1": "0.0267", "Allocated": "15.71 KB" }, { "Method": "Mockolate", - "Mean": "2.198 μs", - "Error": "0.0107 μs", - "StdDev": "0.0095 μs", - "Gen0": "0.5264", - "Gen1": "0.0076", + "Mean": "2.406 μs", + "Error": "0.0264 μs", + "StdDev": "0.0247 μs", + "Gen0": "0.3510", + "Gen1": "0.0038", "Allocated": "8.61 KB" }, { "Method": "Moq", - "Mean": "335.132 μs", - "Error": "6.6715 μs", - "StdDev": "11.5081 μs", - "Gen0": "1.9531", - "Gen1": "0.9766", - "Allocated": "36.46 KB" + "Mean": "313.029 μs", + "Error": "1.5935 μs", + "StdDev": "1.4126 μs", + "Gen0": "0.9766", + "Gen1": "-", + "Allocated": "36.33 KB" }, { "Method": "NSubstitute", - "Mean": "16.133 μs", - "Error": "0.0811 μs", - "StdDev": "0.0719 μs", - "Gen0": "1.6174", + "Mean": "17.050 μs", + "Error": "0.0795 μs", + "StdDev": "0.0621 μs", + "Gen0": "1.0681", "Gen1": "0.0305", "Allocated": "26.72 KB" }, { "Method": "FakeItEasy", - "Mean": "15.681 μs", - "Error": "0.2330 μs", - "StdDev": "0.2066 μs", - "Gen0": "1.4648", - "Gen1": "0.1221", - "Allocated": "25.52 KB" + "Mean": "17.629 μs", + "Error": "0.0694 μs", + "StdDev": "0.0649 μs", + "Gen0": "1.0376", + "Gen1": "0.0305", + "Allocated": "25.61 KB" } ], "Invocation": [ { "Method": "TUnit.Mocks", - "Mean": "254.6 ns", - "Error": "62.89 ns", - "StdDev": "3.45 ns", + "Mean": "233.02 ns", + "Error": "77.76 ns", + "StdDev": "4.262 ns", "Gen0": "0.0062", "Gen1": "0.0057", "Allocated": "120 B" }, { "Method": "Imposter", - "Mean": "315.1 ns", - "Error": "114.14 ns", - "StdDev": "6.26 ns", + "Mean": "267.71 ns", + "Error": "53.17 ns", + "StdDev": "2.915 ns", "Gen0": "0.0100", "Gen1": "0.0095", "Allocated": "168 B" }, { "Method": "Mockolate", - "Mean": "116.6 ns", - "Error": "38.32 ns", - "StdDev": "2.10 ns", + "Mean": "92.02 ns", + "Error": "20.98 ns", + "StdDev": "1.150 ns", "Gen0": "0.0050", - "Gen1": "0.0048", + "Gen1": "0.0049", "Allocated": "84 B" }, { "Method": "Moq", - "Mean": "896.3 ns", - "Error": "372.60 ns", - "StdDev": "20.42 ns", + "Mean": "713.40 ns", + "Error": "260.71 ns", + "StdDev": "14.290 ns", "Gen0": "0.0219", "Gen1": "0.0210", "Allocated": "376 B" }, { "Method": "NSubstitute", - "Mean": "809.4 ns", - "Error": "676.82 ns", - "StdDev": "37.10 ns", - "Gen0": "0.0172", - "Gen1": "0.0162", - "Allocated": "304 B" + "Mean": "673.83 ns", + "Error": "142.09 ns", + "StdDev": "7.789 ns", + "Gen0": "0.0200", + "Gen1": "0.0191", + "Allocated": "360 B" }, { "Method": "FakeItEasy", - "Mean": "1,784.0 ns", - "Error": "559.06 ns", - "StdDev": "30.64 ns", - "Gen0": "0.0534", - "Gen1": "0.0496", + "Mean": "1,531.74 ns", + "Error": "376.17 ns", + "StdDev": "20.619 ns", + "Gen0": "0.0553", + "Gen1": "0.0534", "Allocated": "944 B" }, { "Method": "'TUnit.Mocks (String)'", - "Mean": "160.5 ns", - "Error": "62.51 ns", - "StdDev": "3.43 ns", + "Mean": "144.21 ns", + "Error": "67.99 ns", + "StdDev": "3.727 ns", "Gen0": "0.0048", "Gen1": "0.0045", "Allocated": "88 B" }, { "Method": "'Imposter (String)'", - "Mean": "320.6 ns", - "Error": "145.25 ns", - "StdDev": "7.96 ns", + "Mean": "266.34 ns", + "Error": "97.99 ns", + "StdDev": "5.371 ns", "Gen0": "0.0100", "Gen1": "0.0095", "Allocated": "168 B" }, { "Method": "'Mockolate (String)'", - "Mean": "103.1 ns", - "Error": "52.66 ns", - "StdDev": "2.89 ns", + "Mean": "83.62 ns", + "Error": "13.86 ns", + "StdDev": "0.760 ns", "Gen0": "0.0036", - "Gen1": "0.0033", + "Gen1": "0.0035", "Allocated": "60 B" }, { "Method": "'Moq (String)'", - "Mean": "599.0 ns", - "Error": "816.95 ns", - "StdDev": "44.78 ns", + "Mean": "481.25 ns", + "Error": "39.23 ns", + "StdDev": "2.150 ns", "Gen0": "0.0172", "Gen1": "0.0162", "Allocated": "296 B" }, { "Method": "'NSubstitute (String)'", - "Mean": "634.5 ns", - "Error": "331.35 ns", - "StdDev": "18.16 ns", + "Mean": "589.46 ns", + "Error": "63.31 ns", + "StdDev": "3.470 ns", "Gen0": "0.0153", "Gen1": "0.0143", "Allocated": "272 B" }, { "Method": "'FakeItEasy (String)'", - "Mean": "1,653.4 ns", - "Error": "401.30 ns", - "StdDev": "22.00 ns", + "Mean": "1,377.74 ns", + "Error": "231.05 ns", + "StdDev": "12.665 ns", "Gen0": "0.0458", "Gen1": "0.0439", "Allocated": "776 B" }, { "Method": "'TUnit.Mocks (100 calls)'", - "Mean": "26,421.0 ns", - "Error": "16,107.33 ns", - "StdDev": "882.90 ns", + "Mean": "23,685.24 ns", + "Error": "9,145.49 ns", + "StdDev": "501.295 ns", "Gen0": "0.6104", "Gen1": "0.5798", "Allocated": "11936 B" }, { "Method": "'Imposter (100 calls)'", - "Mean": "31,338.6 ns", - "Error": "23,761.32 ns", - "StdDev": "1,302.44 ns", + "Mean": "26,672.96 ns", + "Error": "730.92 ns", + "StdDev": "40.064 ns", "Gen0": "0.9766", "Gen1": "0.9155", "Allocated": "16800 B" }, { "Method": "'Mockolate (100 calls)'", - "Mean": "11,872.1 ns", - "Error": "1,713.65 ns", - "StdDev": "93.93 ns", + "Mean": "9,008.94 ns", + "Error": "1,871.82 ns", + "StdDev": "102.601 ns", "Gen0": "0.4883", "Gen1": "0.4730", "Allocated": "8400 B" }, { "Method": "'Moq (100 calls)'", - "Mean": "84,982.1 ns", - "Error": "28,250.65 ns", - "StdDev": "1,548.51 ns", + "Mean": "69,538.52 ns", + "Error": "9,099.66 ns", + "StdDev": "498.783 ns", "Gen0": "2.1973", "Gen1": "2.0752", "Allocated": "37600 B" }, { "Method": "'NSubstitute (100 calls)'", - "Mean": "86,959.4 ns", - "Error": "56,683.89 ns", - "StdDev": "3,107.04 ns", - "Gen0": "1.9531", - "Gen1": "1.8311", - "Allocated": "36448 B" + "Mean": "63,140.44 ns", + "Error": "10,488.85 ns", + "StdDev": "574.929 ns", + "Gen0": "1.7090", + "Gen1": "1.5869", + "Allocated": "30848 B" }, { "Method": "'FakeItEasy (100 calls)'", - "Mean": "180,855.7 ns", - "Error": "51,758.53 ns", - "StdDev": "2,837.06 ns", + "Mean": "154,965.78 ns", + "Error": "63,324.58 ns", + "StdDev": "3,471.034 ns", "Gen0": "5.6152", "Gen1": "5.3711", "Allocated": "94400 B" @@ -339,10 +339,9 @@ "MockCreation": [ { "Method": "TUnit.Mocks", - "Mean": "27.84 ns", - "Error": "0.173 ns", - "StdDev": "0.153 ns", - "Median": "27.77 ns", + "Mean": "27.66 ns", + "Error": "0.617 ns", + "StdDev": "1.175 ns", "Gen0": "0.0114", "Gen1": "-", "Gen2": "-", @@ -350,10 +349,9 @@ }, { "Method": "Imposter", - "Mean": "89.08 ns", - "Error": "0.762 ns", - "StdDev": "0.676 ns", - "Median": "88.91 ns", + "Mean": "103.11 ns", + "Error": "1.050 ns", + "StdDev": "0.931 ns", "Gen0": "0.0262", "Gen1": "-", "Gen2": "-", @@ -361,10 +359,9 @@ }, { "Method": "Mockolate", - "Mean": "59.71 ns", - "Error": "1.103 ns", - "StdDev": "1.617 ns", - "Median": "58.84 ns", + "Mean": "65.91 ns", + "Error": "0.488 ns", + "StdDev": "0.456 ns", "Gen0": "0.0253", "Gen1": "-", "Gen2": "-", @@ -372,10 +369,9 @@ }, { "Method": "Moq", - "Mean": "1,313.80 ns", - "Error": "14.780 ns", - "StdDev": "13.825 ns", - "Median": "1,308.87 ns", + "Mean": "1,305.63 ns", + "Error": "25.930 ns", + "StdDev": "24.255 ns", "Gen0": "0.1221", "Gen1": "-", "Gen2": "-", @@ -383,10 +379,9 @@ }, { "Method": "NSubstitute", - "Mean": "1,846.47 ns", - "Error": "28.760 ns", - "StdDev": "26.903 ns", - "Median": "1,828.86 ns", + "Mean": "1,879.29 ns", + "Error": "11.555 ns", + "StdDev": "10.243 ns", "Gen0": "0.2975", "Gen1": "0.0019", "Gen2": "-", @@ -394,10 +389,9 @@ }, { "Method": "FakeItEasy", - "Mean": "1,692.18 ns", - "Error": "31.541 ns", - "StdDev": "29.504 ns", - "Median": "1,678.80 ns", + "Mean": "1,909.70 ns", + "Error": "29.814 ns", + "StdDev": "27.888 ns", "Gen0": "0.1602", "Gen1": "0.0038", "Gen2": "0.0019", @@ -405,21 +399,19 @@ }, { "Method": "'TUnit.Mocks (Repository)'", - "Mean": "24.98 ns", - "Error": "0.032 ns", - "StdDev": "0.025 ns", - "Median": "24.98 ns", - "Gen0": "0.0115", + "Mean": "27.86 ns", + "Error": "0.096 ns", + "StdDev": "0.080 ns", + "Gen0": "0.0114", "Gen1": "-", "Gen2": "-", "Allocated": "192 B" }, { "Method": "'Imposter (Repository)'", - "Mean": "138.42 ns", - "Error": "0.260 ns", - "StdDev": "0.231 ns", - "Median": "138.43 ns", + "Mean": "162.90 ns", + "Error": "0.636 ns", + "StdDev": "0.595 ns", "Gen0": "0.0415", "Gen1": "-", "Gen2": "-", @@ -427,10 +419,9 @@ }, { "Method": "'Mockolate (Repository)'", - "Mean": "58.65 ns", - "Error": "0.333 ns", - "StdDev": "0.312 ns", - "Median": "58.53 ns", + "Mean": "68.79 ns", + "Error": "0.312 ns", + "StdDev": "0.292 ns", "Gen0": "0.0272", "Gen1": "-", "Gen2": "-", @@ -438,10 +429,9 @@ }, { "Method": "'Moq (Repository)'", - "Mean": "1,319.41 ns", - "Error": "7.614 ns", - "StdDev": "7.122 ns", - "Median": "1,316.52 ns", + "Mean": "1,326.69 ns", + "Error": "19.780 ns", + "StdDev": "18.502 ns", "Gen0": "0.1125", "Gen1": "-", "Gen2": "-", @@ -449,10 +439,9 @@ }, { "Method": "'NSubstitute (Repository)'", - "Mean": "1,905.74 ns", - "Error": "13.721 ns", - "StdDev": "12.835 ns", - "Median": "1,905.16 ns", + "Mean": "1,863.52 ns", + "Error": "15.441 ns", + "StdDev": "14.443 ns", "Gen0": "0.2975", "Gen1": "0.0019", "Gen2": "-", @@ -460,10 +449,9 @@ }, { "Method": "'FakeItEasy (Repository)'", - "Mean": "1,790.17 ns", - "Error": "34.440 ns", - "StdDev": "36.851 ns", - "Median": "1,810.66 ns", + "Mean": "1,811.12 ns", + "Error": "12.890 ns", + "StdDev": "10.764 ns", "Gen0": "0.1602", "Gen1": "0.0038", "Gen2": "0.0019", @@ -473,299 +461,281 @@ "Setup": [ { "Method": "TUnit.Mocks", - "Mean": "362.5 ns", - "Error": "5.62 ns", - "StdDev": "4.98 ns", + "Mean": "420.4 ns", + "Error": "3.42 ns", + "StdDev": "3.20 ns", "Gen0": "0.1225", "Gen1": "0.0005", "Allocated": "2.01 KB" }, { "Method": "Imposter", - "Mean": "668.3 ns", - "Error": "13.36 ns", - "StdDev": "19.58 ns", + "Mean": "761.4 ns", + "Error": "10.18 ns", + "StdDev": "9.53 ns", "Gen0": "0.3738", "Gen1": "0.0076", "Allocated": "6.12 KB" }, { "Method": "Mockolate", - "Mean": "298.6 ns", - "Error": "5.79 ns", - "StdDev": "5.41 ns", + "Mean": "361.2 ns", + "Error": "7.15 ns", + "StdDev": "9.79 ns", "Gen0": "0.1025", "Gen1": "0.0005", "Allocated": "1.68 KB" }, { "Method": "Moq", - "Mean": "241,209.7 ns", - "Error": "1,658.73 ns", - "StdDev": "1,470.42 ns", - "Gen0": "1.4648", - "Gen1": "0.9766", - "Allocated": "28.66 KB" + "Mean": "426,086.4 ns", + "Error": "1,616.95 ns", + "StdDev": "1,512.49 ns", + "Gen0": "0.9766", + "Gen1": "-", + "Allocated": "28.69 KB" }, { "Method": "NSubstitute", - "Mean": "4,431.4 ns", - "Error": "42.78 ns", - "StdDev": "40.02 ns", + "Mean": "5,499.1 ns", + "Error": "78.07 ns", + "StdDev": "73.02 ns", "Gen0": "0.5493", - "Gen1": "-", + "Gen1": "0.0076", "Allocated": "9.01 KB" }, { "Method": "FakeItEasy", - "Mean": "5,799.6 ns", - "Error": "111.25 ns", - "StdDev": "136.62 ns", - "Gen0": "0.6332", - "Gen1": "0.0153", + "Mean": "8,184.3 ns", + "Error": "100.19 ns", + "StdDev": "88.82 ns", + "Gen0": "0.6104", + "Gen1": "0.0610", "Allocated": "10.45 KB" }, { "Method": "'TUnit.Mocks (Multiple)'", - "Mean": "514.8 ns", - "Error": "10.15 ns", - "StdDev": "13.54 ns", + "Mean": "603.1 ns", + "Error": "6.26 ns", + "StdDev": "5.55 ns", "Gen0": "0.1574", "Gen1": "0.0010", "Allocated": "2.59 KB" }, { "Method": "'Imposter (Multiple)'", - "Mean": "1,056.8 ns", - "Error": "20.14 ns", - "StdDev": "21.55 ns", + "Mean": "1,351.6 ns", + "Error": "25.99 ns", + "StdDev": "25.53 ns", "Gen0": "0.6485", "Gen1": "0.0248", "Allocated": "10.59 KB" }, { "Method": "'Mockolate (Multiple)'", - "Mean": "537.1 ns", - "Error": "6.88 ns", - "StdDev": "6.43 ns", + "Mean": "603.6 ns", + "Error": "3.16 ns", + "StdDev": "2.95 ns", "Gen0": "0.1726", "Gen1": "0.0010", "Allocated": "2.82 KB" }, { "Method": "'Moq (Multiple)'", - "Mean": "68,570.5 ns", - "Error": "406.55 ns", - "StdDev": "380.29 ns", + "Mean": "112,461.1 ns", + "Error": "464.25 ns", + "StdDev": "434.26 ns", "Gen0": "0.9766", "Gen1": "0.7324", "Allocated": "16.53 KB" }, { "Method": "'NSubstitute (Multiple)'", - "Mean": "8,364.1 ns", - "Error": "103.42 ns", - "StdDev": "96.74 ns", + "Mean": "11,790.2 ns", + "Error": "90.50 ns", + "StdDev": "80.23 ns", "Gen0": "1.2207", "Gen1": "-", - "Allocated": "20.5 KB" + "Allocated": "20.31 KB" }, { "Method": "'FakeItEasy (Multiple)'", - "Mean": "5,147.8 ns", - "Error": "41.71 ns", - "StdDev": "32.56 ns", - "Gen0": "0.7019", - "Gen1": "0.0305", + "Mean": "7,663.9 ns", + "Error": "78.05 ns", + "StdDev": "65.17 ns", + "Gen0": "0.6714", + "Gen1": "0.0610", "Allocated": "11.71 KB" } ], "Verification": [ { "Method": "TUnit.Mocks", - "Mean": "714.61 ns", - "Error": "5.465 ns", - "StdDev": "5.112 ns", - "Median": "716.47 ns", + "Mean": "692.20 ns", + "Error": "12.586 ns", + "StdDev": "11.773 ns", "Gen0": "0.1707", "Gen1": "0.0010", "Allocated": "2864 B" }, { "Method": "Imposter", - "Mean": "664.96 ns", - "Error": "3.310 ns", - "StdDev": "2.764 ns", - "Median": "663.74 ns", + "Mean": "743.98 ns", + "Error": "13.959 ns", + "StdDev": "13.710 ns", "Gen0": "0.2794", "Gen1": "0.0038", "Allocated": "4688 B" }, { "Method": "Mockolate", - "Mean": "402.97 ns", - "Error": "1.441 ns", - "StdDev": "1.348 ns", - "Median": "403.29 ns", + "Mean": "434.71 ns", + "Error": "7.021 ns", + "StdDev": "6.567 ns", "Gen0": "0.1326", "Gen1": "0.0005", "Allocated": "2224 B" }, { "Method": "Moq", - "Mean": "236,931.26 ns", - "Error": "1,505.857 ns", - "StdDev": "1,334.903 ns", - "Median": "236,733.27 ns", + "Mean": "345,187.52 ns", + "Error": "1,881.825 ns", + "StdDev": "1,668.189 ns", "Gen0": "0.9766", - "Gen1": "0.4883", - "Allocated": "24324 B" + "Gen1": "-", + "Allocated": "24325 B" }, { "Method": "NSubstitute", - "Mean": "5,970.47 ns", - "Error": "59.028 ns", - "StdDev": "55.215 ns", - "Median": "5,971.10 ns", - "Gen0": "0.5951", - "Gen1": "0.0076", + "Mean": "6,509.70 ns", + "Error": "114.123 ns", + "StdDev": "106.751 ns", + "Gen0": "0.5493", + "Gen1": "-", "Allocated": "10064 B" }, { "Method": "FakeItEasy", - "Mean": "6,607.76 ns", - "Error": "126.499 ns", - "StdDev": "118.327 ns", - "Median": "6,567.02 ns", + "Mean": "7,584.79 ns", + "Error": "42.067 ns", + "StdDev": "39.350 ns", "Gen0": "0.6409", "Gen1": "0.0153", "Allocated": "10722 B" }, { "Method": "'TUnit.Mocks (Never)'", - "Mean": "54.55 ns", - "Error": "0.669 ns", - "StdDev": "0.593 ns", - "Median": "54.51 ns", + "Mean": "52.59 ns", + "Error": "0.945 ns", + "StdDev": "1.050 ns", "Gen0": "0.0181", "Gen1": "-", "Allocated": "304 B" }, { "Method": "'Imposter (Never)'", - "Mean": "358.76 ns", - "Error": "6.906 ns", - "StdDev": "7.092 ns", - "Median": "358.52 ns", + "Mean": "333.44 ns", + "Error": "6.502 ns", + "StdDev": "9.929 ns", "Gen0": "0.1431", "Gen1": "0.0010", "Allocated": "2400 B" }, { "Method": "'Mockolate (Never)'", - "Mean": "264.08 ns", - "Error": "2.023 ns", - "StdDev": "1.892 ns", - "Median": "264.16 ns", + "Mean": "242.96 ns", + "Error": "4.825 ns", + "StdDev": "4.739 ns", "Gen0": "0.0739", "Gen1": "-", "Allocated": "1240 B" }, { "Method": "'Moq (Never)'", - "Mean": "64,508.90 ns", - "Error": "412.242 ns", - "StdDev": "365.442 ns", - "Median": "64,511.90 ns", - "Gen0": "0.3662", - "Gen1": "0.2441", - "Allocated": "7037 B" + "Mean": "88,636.42 ns", + "Error": "299.264 ns", + "StdDev": "265.289 ns", + "Gen0": "0.2441", + "Gen1": "-", + "Allocated": "6918 B" }, { "Method": "'NSubstitute (Never)'", - "Mean": "3,563.08 ns", - "Error": "67.991 ns", - "StdDev": "66.777 ns", - "Median": "3,581.50 ns", + "Mean": "3,716.60 ns", + "Error": "42.887 ns", + "StdDev": "40.116 ns", "Gen0": "0.4234", "Gen1": "0.0038", "Allocated": "7088 B" }, { "Method": "'FakeItEasy (Never)'", - "Mean": "3,376.02 ns", - "Error": "21.737 ns", - "StdDev": "20.333 ns", - "Median": "3,377.28 ns", + "Mean": "3,666.47 ns", + "Error": "72.521 ns", + "StdDev": "77.596 ns", "Gen0": "0.3052", - "Gen1": "0.0153", - "Allocated": "5210 B" + "Gen1": "0.0305", + "Allocated": "5209 B" }, { "Method": "'TUnit.Mocks (Multiple)'", - "Mean": "1,166.26 ns", - "Error": "12.320 ns", - "StdDev": "11.524 ns", - "Median": "1,169.16 ns", + "Mean": "1,233.32 ns", + "Error": "16.516 ns", + "StdDev": "15.449 ns", "Gen0": "0.2480", "Gen1": "0.0019", "Allocated": "4176 B" }, { "Method": "'Imposter (Multiple)'", - "Mean": "1,863.59 ns", - "Error": "36.946 ns", - "StdDev": "103.602 ns", - "Median": "1,843.57 ns", + "Mean": "1,897.47 ns", + "Error": "34.183 ns", + "StdDev": "31.975 ns", "Gen0": "0.6676", "Gen1": "0.0210", "Allocated": "11192 B" }, { "Method": "'Mockolate (Multiple)'", - "Mean": "1,182.54 ns", - "Error": "22.667 ns", - "StdDev": "49.754 ns", - "Median": "1,156.49 ns", + "Mean": "1,192.00 ns", + "Error": "23.634 ns", + "StdDev": "41.392 ns", "Gen0": "0.3223", "Gen1": "0.0038", "Allocated": "5408 B" }, { "Method": "'Moq (Multiple)'", - "Mean": "346,679.12 ns", - "Error": "2,333.038 ns", - "StdDev": "2,182.325 ns", - "Median": "346,226.07 ns", + "Mean": "467,825.85 ns", + "Error": "2,972.337 ns", + "StdDev": "2,780.326 ns", "Gen0": "1.9531", "Gen1": "0.9766", "Allocated": "34699 B" }, { "Method": "'NSubstitute (Multiple)'", - "Mean": "10,394.53 ns", - "Error": "65.161 ns", - "StdDev": "60.952 ns", - "Median": "10,373.92 ns", + "Mean": "11,477.50 ns", + "Error": "69.517 ns", + "StdDev": "58.050 ns", "Gen0": "0.9918", "Gen1": "0.0153", "Allocated": "16762 B" }, { "Method": "'FakeItEasy (Multiple)'", - "Mean": "11,620.16 ns", - "Error": "115.668 ns", - "StdDev": "108.196 ns", - "Median": "11,648.87 ns", + "Mean": "13,761.56 ns", + "Error": "216.979 ns", + "StdDev": "192.346 ns", "Gen0": "1.0986", - "Gen1": "0.0610", - "Allocated": "19232 B" + "Gen1": "-", + "Allocated": "19233 B" } ] }, "stats": { "categoryCount": 6, "totalBenchmarks": 78, - "lastUpdated": "2026-05-05T03:26:21.616Z" + "lastUpdated": "2026-05-06T03:25:44.139Z" } } \ No newline at end of file diff --git a/docs/static/benchmarks/mocks/summary.json b/docs/static/benchmarks/mocks/summary.json index c495f184f6..1a81b1ff8c 100644 --- a/docs/static/benchmarks/mocks/summary.json +++ b/docs/static/benchmarks/mocks/summary.json @@ -7,7 +7,7 @@ "Setup", "Verification" ], - "timestamp": "2026-05-05", + "timestamp": "2026-05-06", "environment": "Ubuntu Latest • .NET SDK 10.0.203", "libraries": [ "TUnit.Mocks",