diff --git a/docs/docs/benchmarks/mocks/Callback.md b/docs/docs/benchmarks/mocks/Callback.md index 2a6b9cba65..7366dd9c29 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-06** from the latest CI run. +This benchmark was automatically generated on **2026-05-07** 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** | 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 | +| **TUnit.Mocks** | 605.0 ns | 11.63 ns | 11.42 ns | 2.98 KB | +| Imposter | 488.9 ns | 7.92 ns | 7.02 ns | 2.66 KB | +| Mockolate | 356.9 ns | 5.00 ns | 4.67 ns | 1.89 KB | +| Moq | 182,052.0 ns | 1,447.27 ns | 1,282.97 ns | 13.14 KB | +| NSubstitute | 4,457.5 ns | 44.77 ns | 39.69 ns | 7.93 KB | +| FakeItEasy | 5,020.6 ns | 63.90 ns | 59.77 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 --> 216422 - bar [611.7, 448, 354.2, 180351.2, 4464.3, 5063.1] + y-axis "Time (ns)" 0 --> 218463 + bar [605, 488.9, 356.9, 182052, 4457.5, 5020.6] ``` --- @@ -59,12 +59,12 @@ xychart-beta | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **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 | +| **TUnit.Mocks** | 708.9 ns | 4.91 ns | 4.35 ns | 3.06 KB | +| Imposter | 515.8 ns | 1.39 ns | 1.16 ns | 2.82 KB | +| Mockolate | 407.0 ns | 1.81 ns | 1.60 ns | 1.94 KB | +| Moq | 190,047.9 ns | 1,366.44 ns | 1,141.04 ns | 13.73 KB | +| NSubstitute | 5,119.8 ns | 71.54 ns | 63.42 ns | 8.53 KB | +| FakeItEasy | 6,508.2 ns | 82.74 ns | 73.34 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 --> 226949 - bar [706.7, 512.7, 392.2, 189124.1, 5249.4, 6283.3] + y-axis "Time (ns)" 0 --> 228058 + bar [708.9, 515.8, 407, 190047.9, 5119.8, 6508.2] ``` ## 🎯 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-06T03:25:44.139Z* +*Last generated: 2026-05-07T03:27:11.074Z* diff --git a/docs/docs/benchmarks/mocks/CombinedWorkflow.md b/docs/docs/benchmarks/mocks/CombinedWorkflow.md index c78b8c072a..defd5a9823 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-06** from the latest CI run. +This benchmark was automatically generated on **2026-05-07** 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.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 | +| **TUnit.Mocks** | 1.683 μs | 0.0114 μs | 0.0101 μs | 5.8 KB | +| Imposter | 2.704 μs | 0.0536 μs | 0.0835 μs | 15.71 KB | +| Mockolate | 2.317 μs | 0.0459 μs | 0.0564 μs | 8.61 KB | +| Moq | 406.590 μs | 2.0552 μs | 1.9224 μs | 36.35 KB | +| NSubstitute | 17.535 μs | 0.1478 μs | 0.1311 μs | 26.72 KB | +| FakeItEasy | 18.353 μs | 0.0673 μs | 0.0562 μs | 25.52 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 --> 376 - bar [1.941, 3.112, 2.406, 313.029, 17.05, 17.629] + y-axis "Time (μs)" 0 --> 488 + bar [1.683, 2.704, 2.317, 406.59, 17.535, 18.353] ``` ## 🎯 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-06T03:25:44.139Z* +*Last generated: 2026-05-07T03:27:11.074Z* diff --git a/docs/docs/benchmarks/mocks/Invocation.md b/docs/docs/benchmarks/mocks/Invocation.md index a012ede885..92bbce556d 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-06** from the latest CI run. +This benchmark was automatically generated on **2026-05-07** 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** | 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 | +| **TUnit.Mocks** | 252.11 ns | 76.98 ns | 4.220 ns | 120 B | +| Imposter | 287.71 ns | 61.54 ns | 3.373 ns | 168 B | +| Mockolate | 101.11 ns | 39.40 ns | 2.160 ns | 84 B | +| Moq | 785.48 ns | 113.60 ns | 6.227 ns | 376 B | +| NSubstitute | 693.53 ns | 314.80 ns | 17.255 ns | 304 B | +| FakeItEasy | 1,678.21 ns | 253.33 ns | 13.886 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 --> 1839 - bar [233.02, 267.71, 92.02, 713.4, 673.83, 1531.74] + y-axis "Time (ns)" 0 --> 2014 + bar [252.11, 287.71, 101.11, 785.48, 693.53, 1678.21] ``` --- @@ -59,12 +59,12 @@ xychart-beta | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **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 | +| **TUnit.Mocks** | 152.16 ns | 64.48 ns | 3.534 ns | 88 B | +| Imposter | 291.60 ns | 92.81 ns | 5.087 ns | 168 B | +| Mockolate | 93.12 ns | 45.83 ns | 2.512 ns | 60 B | +| Moq | 546.32 ns | 42.56 ns | 2.333 ns | 296 B | +| NSubstitute | 614.45 ns | 136.78 ns | 7.498 ns | 272 B | +| FakeItEasy | 1,520.86 ns | 468.61 ns | 25.686 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 --> 1654 - bar [144.21, 266.34, 83.62, 481.25, 589.46, 1377.74] + y-axis "Time (ns)" 0 --> 1826 + bar [152.16, 291.6, 93.12, 546.32, 614.45, 1520.86] ``` --- @@ -100,12 +100,12 @@ xychart-beta | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **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 | +| **TUnit.Mocks** | 25,281.98 ns | 10,902.54 ns | 597.605 ns | 11936 B | +| Imposter | 28,233.68 ns | 8,459.15 ns | 463.674 ns | 16800 B | +| Mockolate | 9,890.21 ns | 2,103.03 ns | 115.274 ns | 8400 B | +| Moq | 79,312.70 ns | 9,428.16 ns | 516.789 ns | 37600 B | +| NSubstitute | 68,918.59 ns | 25,106.46 ns | 1,376.170 ns | 30848 B | +| FakeItEasy | 169,654.16 ns | 96,965.08 ns | 5,314.983 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 --> 185959 - bar [23685.24, 26672.96, 9008.94, 69538.52, 63140.44, 154965.78] + y-axis "Time (ns)" 0 --> 203585 + bar [25281.98, 28233.68, 9890.21, 79312.7, 68918.59, 169654.16] ``` ## 🎯 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-06T03:25:44.139Z* +*Last generated: 2026-05-07T03:27:11.074Z* diff --git a/docs/docs/benchmarks/mocks/MockCreation.md b/docs/docs/benchmarks/mocks/MockCreation.md index 046b5298da..0aee26cc55 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-06** from the latest CI run. +This benchmark was automatically generated on **2026-05-07** 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.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 | +| **TUnit.Mocks** | 25.56 ns | 0.221 ns | 0.206 ns | 192 B | +| Imposter | 90.54 ns | 0.555 ns | 0.463 ns | 440 B | +| Mockolate | 60.03 ns | 0.338 ns | 0.300 ns | 424 B | +| Moq | 1,320.57 ns | 18.193 ns | 16.128 ns | 2048 B | +| NSubstitute | 1,754.76 ns | 13.714 ns | 12.157 ns | 5000 B | +| FakeItEasy | 1,657.70 ns | 11.171 ns | 9.903 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 --> 2292 - bar [27.66, 103.11, 65.91, 1305.63, 1879.29, 1909.7] + y-axis "Time (ns)" 0 --> 2106 + bar [25.56, 90.54, 60.03, 1320.57, 1754.76, 1657.7] ``` --- @@ -59,12 +59,12 @@ xychart-beta | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **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 | +| **TUnit.Mocks** | 25.40 ns | 0.293 ns | 0.274 ns | 192 B | +| Imposter | 141.69 ns | 1.229 ns | 1.089 ns | 696 B | +| Mockolate | 61.27 ns | 0.868 ns | 0.725 ns | 456 B | +| Moq | 1,396.39 ns | 13.222 ns | 12.368 ns | 1912 B | +| NSubstitute | 1,860.03 ns | 27.324 ns | 24.222 ns | 5000 B | +| FakeItEasy | 1,808.52 ns | 31.969 ns | 36.816 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 --> 2237 - bar [27.86, 162.9, 68.79, 1326.69, 1863.52, 1811.12] + y-axis "Time (ns)" 0 --> 2233 + bar [25.4, 141.69, 61.27, 1396.39, 1860.03, 1808.52] ``` ## 🎯 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-06T03:25:44.139Z* +*Last generated: 2026-05-07T03:27:11.074Z* diff --git a/docs/docs/benchmarks/mocks/Setup.md b/docs/docs/benchmarks/mocks/Setup.md index b30d59f22b..b7e6c1d5fb 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-06** from the latest CI run. +This benchmark was automatically generated on **2026-05-07** 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** | 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 | +| **TUnit.Mocks** | 442.5 ns | 7.28 ns | 6.81 ns | 2.01 KB | +| Imposter | 911.3 ns | 18.19 ns | 29.89 ns | 6.12 KB | +| Mockolate | 364.2 ns | 7.16 ns | 7.95 ns | 1.68 KB | +| Moq | 431,403.0 ns | 2,092.55 ns | 1,854.99 ns | 28.64 KB | +| NSubstitute | 5,626.7 ns | 34.76 ns | 29.02 ns | 9.06 KB | +| FakeItEasy | 8,246.7 ns | 88.84 ns | 83.10 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 --> 511304 - bar [420.4, 761.4, 361.2, 426086.4, 5499.1, 8184.3] + y-axis "Time (ns)" 0 --> 517684 + bar [442.5, 911.3, 364.2, 431403, 5626.7, 8246.7] ``` --- @@ -59,12 +59,12 @@ xychart-beta | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **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 | +| **TUnit.Mocks** | 636.4 ns | 12.75 ns | 13.10 ns | 2.59 KB | +| Imposter | 1,409.7 ns | 16.41 ns | 13.71 ns | 10.59 KB | +| Mockolate | 644.7 ns | 12.93 ns | 15.40 ns | 2.82 KB | +| Moq | 114,127.6 ns | 523.62 ns | 489.79 ns | 16.53 KB | +| NSubstitute | 12,312.4 ns | 125.64 ns | 111.37 ns | 20.31 KB | +| FakeItEasy | 8,144.3 ns | 151.36 ns | 134.18 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 --> 134954 - bar [603.1, 1351.6, 603.6, 112461.1, 11790.2, 7663.9] + y-axis "Time (ns)" 0 --> 136954 + bar [636.4, 1409.7, 644.7, 114127.6, 12312.4, 8144.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-06T03:25:44.139Z* +*Last generated: 2026-05-07T03:27:11.074Z* diff --git a/docs/docs/benchmarks/mocks/Verification.md b/docs/docs/benchmarks/mocks/Verification.md index cda5c6d0df..87004cac3e 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-06** from the latest CI run. +This benchmark was automatically generated on **2026-05-07** 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** | 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 | +| **TUnit.Mocks** | 719.38 ns | 12.254 ns | 11.462 ns | 2864 B | +| Imposter | 739.62 ns | 14.038 ns | 24.587 ns | 4688 B | +| Mockolate | 437.41 ns | 6.116 ns | 5.721 ns | 2224 B | +| Moq | 348,573.71 ns | 1,467.544 ns | 1,300.940 ns | 24325 B | +| NSubstitute | 6,556.26 ns | 66.140 ns | 61.867 ns | 10064 B | +| FakeItEasy | 7,439.71 ns | 48.847 ns | 45.692 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 --> 414226 - bar [692.2, 743.98, 434.71, 345187.52, 6509.7, 7584.79] + y-axis "Time (ns)" 0 --> 418289 + bar [719.38, 739.62, 437.41, 348573.71, 6556.26, 7439.71] ``` --- @@ -59,12 +59,12 @@ xychart-beta | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **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 | +| **TUnit.Mocks** | 52.80 ns | 1.069 ns | 1.144 ns | 304 B | +| Imposter | 349.18 ns | 4.059 ns | 3.169 ns | 2400 B | +| Mockolate | 272.03 ns | 5.307 ns | 5.679 ns | 1240 B | +| Moq | 88,566.54 ns | 330.274 ns | 275.794 ns | 6918 B | +| NSubstitute | 3,701.24 ns | 47.388 ns | 44.326 ns | 7088 B | +| FakeItEasy | 3,867.28 ns | 39.721 ns | 35.212 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 --> 106364 - bar [52.59, 333.44, 242.96, 88636.42, 3716.6, 3666.47] + y-axis "Time (ns)" 0 --> 106280 + bar [52.8, 349.18, 272.03, 88566.54, 3701.24, 3867.28] ``` --- @@ -100,12 +100,12 @@ xychart-beta | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **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 | +| **TUnit.Mocks** | 1,244.55 ns | 10.659 ns | 9.970 ns | 4176 B | +| Imposter | 1,882.41 ns | 31.474 ns | 29.441 ns | 11192 B | +| Mockolate | 1,229.93 ns | 21.381 ns | 20.000 ns | 5408 B | +| Moq | 485,545.95 ns | 2,779.339 ns | 2,599.795 ns | 34699 B | +| NSubstitute | 11,567.51 ns | 56.901 ns | 50.442 ns | 16762 B | +| FakeItEasy | 14,031.00 ns | 137.333 ns | 128.462 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 --> 561392 - bar [1233.32, 1897.47, 1192, 467825.85, 11477.5, 13761.56] + y-axis "Time (ns)" 0 --> 582656 + bar [1244.55, 1882.41, 1229.93, 485545.95, 11567.51, 14031] ``` ## 🎯 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-06T03:25:44.139Z* +*Last generated: 2026-05-07T03:27:11.074Z* diff --git a/docs/docs/benchmarks/mocks/index.md b/docs/docs/benchmarks/mocks/index.md index 47f90802ff..04abf8bc52 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-06** from the latest CI run. +These benchmarks were automatically generated on **2026-05-07** 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-06T03:25:44.139Z* +*Last generated: 2026-05-07T03:27:11.074Z* diff --git a/docs/static/benchmarks/mocks/Callback.json b/docs/static/benchmarks/mocks/Callback.json index 85cdd456ca..1dccb2e705 100644 --- a/docs/static/benchmarks/mocks/Callback.json +++ b/docs/static/benchmarks/mocks/Callback.json @@ -1,5 +1,5 @@ { - "timestamp": "2026-05-06T03:25:44.139Z", + "timestamp": "2026-05-07T03:27:11.074Z", "category": "Callback", "description": "Callback registration and execution", "environment": { @@ -10,108 +10,108 @@ "results": [ { "Method": "TUnit.Mocks", - "Mean": "611.7 ns", - "Error": "3.24 ns", - "StdDev": "2.87 ns", + "Mean": "605.0 ns", + "Error": "11.63 ns", + "StdDev": "11.42 ns", "Gen0": "0.1822", "Gen1": "0.0019", "Allocated": "2.98 KB" }, { "Method": "Imposter", - "Mean": "448.0 ns", - "Error": "0.87 ns", - "StdDev": "0.68 ns", - "Gen0": "0.1626", - "Gen1": "0.0014", + "Mean": "488.9 ns", + "Error": "7.92 ns", + "StdDev": "7.02 ns", + "Gen0": "0.1621", + "Gen1": "0.0010", "Allocated": "2.66 KB" }, { "Method": "Mockolate", - "Mean": "354.2 ns", - "Error": "7.05 ns", - "StdDev": "9.88 ns", + "Mean": "356.9 ns", + "Error": "5.00 ns", + "StdDev": "4.67 ns", "Gen0": "0.1154", "Gen1": "0.0005", "Allocated": "1.89 KB" }, { "Method": "Moq", - "Mean": "180,351.2 ns", - "Error": "550.15 ns", - "StdDev": "514.61 ns", + "Mean": "182,052.0 ns", + "Error": "1,447.27 ns", + "StdDev": "1,282.97 ns", "Gen0": "0.4883", "Gen1": "-", "Allocated": "13.14 KB" }, { "Method": "NSubstitute", - "Mean": "4,464.3 ns", - "Error": "20.77 ns", - "StdDev": "18.41 ns", + "Mean": "4,457.5 ns", + "Error": "44.77 ns", + "StdDev": "39.69 ns", "Gen0": "0.4807", "Gen1": "0.0076", "Allocated": "7.93 KB" }, { "Method": "FakeItEasy", - "Mean": "5,063.1 ns", - "Error": "21.07 ns", - "StdDev": "19.71 ns", + "Mean": "5,020.6 ns", + "Error": "63.90 ns", + "StdDev": "59.77 ns", "Gen0": "0.4501", "Gen1": "0.0153", "Allocated": "7.44 KB" }, { "Method": "'TUnit.Mocks (with args)'", - "Mean": "706.7 ns", - "Error": "1.87 ns", - "StdDev": "1.75 ns", + "Mean": "708.9 ns", + "Error": "4.91 ns", + "StdDev": "4.35 ns", "Gen0": "0.1869", "Gen1": "0.0019", "Allocated": "3.06 KB" }, { "Method": "'Imposter (with args)'", - "Mean": "512.7 ns", - "Error": "1.75 ns", - "StdDev": "1.64 ns", + "Mean": "515.8 ns", + "Error": "1.39 ns", + "StdDev": "1.16 ns", "Gen0": "0.1726", "Gen1": "0.0010", "Allocated": "2.82 KB" }, { "Method": "'Mockolate (with args)'", - "Mean": "392.2 ns", - "Error": "1.45 ns", - "StdDev": "1.13 ns", + "Mean": "407.0 ns", + "Error": "1.81 ns", + "StdDev": "1.60 ns", "Gen0": "0.1183", "Gen1": "0.0005", "Allocated": "1.94 KB" }, { "Method": "'Moq (with args)'", - "Mean": "189,124.1 ns", - "Error": "1,331.75 ns", - "StdDev": "1,180.56 ns", + "Mean": "190,047.9 ns", + "Error": "1,366.44 ns", + "StdDev": "1,141.04 ns", "Gen0": "0.4883", "Gen1": "-", "Allocated": "13.73 KB" }, { "Method": "'NSubstitute (with args)'", - "Mean": "5,249.4 ns", - "Error": "81.66 ns", - "StdDev": "72.39 ns", - "Gen0": "0.4883", - "Gen1": "-", + "Mean": "5,119.8 ns", + "Error": "71.54 ns", + "StdDev": "63.42 ns", + "Gen0": "0.5188", + "Gen1": "0.0076", "Allocated": "8.53 KB" }, { "Method": "'FakeItEasy (with args)'", - "Mean": "6,283.3 ns", - "Error": "81.24 ns", - "StdDev": "75.99 ns", + "Mean": "6,508.2 ns", + "Error": "82.74 ns", + "StdDev": "73.34 ns", "Gen0": "0.5493", "Gen1": "0.0610", "Allocated": "9.4 KB" diff --git a/docs/static/benchmarks/mocks/CombinedWorkflow.json b/docs/static/benchmarks/mocks/CombinedWorkflow.json index d382bb2d79..6e32b8efff 100644 --- a/docs/static/benchmarks/mocks/CombinedWorkflow.json +++ b/docs/static/benchmarks/mocks/CombinedWorkflow.json @@ -1,5 +1,5 @@ { - "timestamp": "2026-05-06T03:25:44.139Z", + "timestamp": "2026-05-07T03:27:11.074Z", "category": "CombinedWorkflow", "description": "Full workflow: create → setup → invoke → verify", "environment": { @@ -10,57 +10,57 @@ "results": [ { "Method": "TUnit.Mocks", - "Mean": "1.941 μs", - "Error": "0.0141 μs", - "StdDev": "0.0132 μs", - "Gen0": "0.2365", - "Gen1": "0.0038", + "Mean": "1.683 μs", + "Error": "0.0114 μs", + "StdDev": "0.0101 μs", + "Gen0": "0.3548", + "Gen1": "0.0057", "Allocated": "5.8 KB" }, { "Method": "Imposter", - "Mean": "3.112 μs", - "Error": "0.0617 μs", - "StdDev": "0.0633 μs", - "Gen0": "0.6409", - "Gen1": "0.0267", + "Mean": "2.704 μs", + "Error": "0.0536 μs", + "StdDev": "0.0835 μs", + "Gen0": "0.9613", + "Gen1": "0.0458", "Allocated": "15.71 KB" }, { "Method": "Mockolate", - "Mean": "2.406 μs", - "Error": "0.0264 μs", - "StdDev": "0.0247 μs", - "Gen0": "0.3510", - "Gen1": "0.0038", + "Mean": "2.317 μs", + "Error": "0.0459 μs", + "StdDev": "0.0564 μs", + "Gen0": "0.5264", + "Gen1": "0.0076", "Allocated": "8.61 KB" }, { "Method": "Moq", - "Mean": "313.029 μs", - "Error": "1.5935 μs", - "StdDev": "1.4126 μs", - "Gen0": "0.9766", - "Gen1": "-", - "Allocated": "36.33 KB" + "Mean": "406.590 μs", + "Error": "2.0552 μs", + "StdDev": "1.9224 μs", + "Gen0": "1.9531", + "Gen1": "0.9766", + "Allocated": "36.35 KB" }, { "Method": "NSubstitute", - "Mean": "17.050 μs", - "Error": "0.0795 μs", - "StdDev": "0.0621 μs", - "Gen0": "1.0681", + "Mean": "17.535 μs", + "Error": "0.1478 μs", + "StdDev": "0.1311 μs", + "Gen0": "1.6174", "Gen1": "0.0305", "Allocated": "26.72 KB" }, { "Method": "FakeItEasy", - "Mean": "17.629 μs", - "Error": "0.0694 μs", - "StdDev": "0.0649 μs", - "Gen0": "1.0376", + "Mean": "18.353 μs", + "Error": "0.0673 μs", + "StdDev": "0.0562 μs", + "Gen0": "1.5564", "Gen1": "0.0305", - "Allocated": "25.61 KB" + "Allocated": "25.52 KB" } ] } \ No newline at end of file diff --git a/docs/static/benchmarks/mocks/Invocation.json b/docs/static/benchmarks/mocks/Invocation.json index 87a151364d..3179c471ca 100644 --- a/docs/static/benchmarks/mocks/Invocation.json +++ b/docs/static/benchmarks/mocks/Invocation.json @@ -1,5 +1,5 @@ { - "timestamp": "2026-05-06T03:25:44.139Z", + "timestamp": "2026-05-07T03:27:11.074Z", "category": "Invocation", "description": "Calling methods on mock objects", "environment": { @@ -10,162 +10,162 @@ "results": [ { "Method": "TUnit.Mocks", - "Mean": "233.02 ns", - "Error": "77.76 ns", - "StdDev": "4.262 ns", + "Mean": "252.11 ns", + "Error": "76.98 ns", + "StdDev": "4.220 ns", "Gen0": "0.0062", "Gen1": "0.0057", "Allocated": "120 B" }, { "Method": "Imposter", - "Mean": "267.71 ns", - "Error": "53.17 ns", - "StdDev": "2.915 ns", + "Mean": "287.71 ns", + "Error": "61.54 ns", + "StdDev": "3.373 ns", "Gen0": "0.0100", "Gen1": "0.0095", "Allocated": "168 B" }, { "Method": "Mockolate", - "Mean": "92.02 ns", - "Error": "20.98 ns", - "StdDev": "1.150 ns", + "Mean": "101.11 ns", + "Error": "39.40 ns", + "StdDev": "2.160 ns", "Gen0": "0.0050", - "Gen1": "0.0049", + "Gen1": "0.0048", "Allocated": "84 B" }, { "Method": "Moq", - "Mean": "713.40 ns", - "Error": "260.71 ns", - "StdDev": "14.290 ns", + "Mean": "785.48 ns", + "Error": "113.60 ns", + "StdDev": "6.227 ns", "Gen0": "0.0219", "Gen1": "0.0210", "Allocated": "376 B" }, { "Method": "NSubstitute", - "Mean": "673.83 ns", - "Error": "142.09 ns", - "StdDev": "7.789 ns", - "Gen0": "0.0200", - "Gen1": "0.0191", - "Allocated": "360 B" + "Mean": "693.53 ns", + "Error": "314.80 ns", + "StdDev": "17.255 ns", + "Gen0": "0.0172", + "Gen1": "0.0162", + "Allocated": "304 B" }, { "Method": "FakeItEasy", - "Mean": "1,531.74 ns", - "Error": "376.17 ns", - "StdDev": "20.619 ns", + "Mean": "1,678.21 ns", + "Error": "253.33 ns", + "StdDev": "13.886 ns", "Gen0": "0.0553", "Gen1": "0.0534", "Allocated": "944 B" }, { "Method": "'TUnit.Mocks (String)'", - "Mean": "144.21 ns", - "Error": "67.99 ns", - "StdDev": "3.727 ns", + "Mean": "152.16 ns", + "Error": "64.48 ns", + "StdDev": "3.534 ns", "Gen0": "0.0048", "Gen1": "0.0045", "Allocated": "88 B" }, { "Method": "'Imposter (String)'", - "Mean": "266.34 ns", - "Error": "97.99 ns", - "StdDev": "5.371 ns", + "Mean": "291.60 ns", + "Error": "92.81 ns", + "StdDev": "5.087 ns", "Gen0": "0.0100", "Gen1": "0.0095", "Allocated": "168 B" }, { "Method": "'Mockolate (String)'", - "Mean": "83.62 ns", - "Error": "13.86 ns", - "StdDev": "0.760 ns", + "Mean": "93.12 ns", + "Error": "45.83 ns", + "StdDev": "2.512 ns", "Gen0": "0.0036", "Gen1": "0.0035", "Allocated": "60 B" }, { "Method": "'Moq (String)'", - "Mean": "481.25 ns", - "Error": "39.23 ns", - "StdDev": "2.150 ns", + "Mean": "546.32 ns", + "Error": "42.56 ns", + "StdDev": "2.333 ns", "Gen0": "0.0172", "Gen1": "0.0162", "Allocated": "296 B" }, { "Method": "'NSubstitute (String)'", - "Mean": "589.46 ns", - "Error": "63.31 ns", - "StdDev": "3.470 ns", + "Mean": "614.45 ns", + "Error": "136.78 ns", + "StdDev": "7.498 ns", "Gen0": "0.0153", "Gen1": "0.0143", "Allocated": "272 B" }, { "Method": "'FakeItEasy (String)'", - "Mean": "1,377.74 ns", - "Error": "231.05 ns", - "StdDev": "12.665 ns", + "Mean": "1,520.86 ns", + "Error": "468.61 ns", + "StdDev": "25.686 ns", "Gen0": "0.0458", "Gen1": "0.0439", "Allocated": "776 B" }, { "Method": "'TUnit.Mocks (100 calls)'", - "Mean": "23,685.24 ns", - "Error": "9,145.49 ns", - "StdDev": "501.295 ns", + "Mean": "25,281.98 ns", + "Error": "10,902.54 ns", + "StdDev": "597.605 ns", "Gen0": "0.6104", "Gen1": "0.5798", "Allocated": "11936 B" }, { "Method": "'Imposter (100 calls)'", - "Mean": "26,672.96 ns", - "Error": "730.92 ns", - "StdDev": "40.064 ns", + "Mean": "28,233.68 ns", + "Error": "8,459.15 ns", + "StdDev": "463.674 ns", "Gen0": "0.9766", "Gen1": "0.9155", "Allocated": "16800 B" }, { "Method": "'Mockolate (100 calls)'", - "Mean": "9,008.94 ns", - "Error": "1,871.82 ns", - "StdDev": "102.601 ns", + "Mean": "9,890.21 ns", + "Error": "2,103.03 ns", + "StdDev": "115.274 ns", "Gen0": "0.4883", "Gen1": "0.4730", "Allocated": "8400 B" }, { "Method": "'Moq (100 calls)'", - "Mean": "69,538.52 ns", - "Error": "9,099.66 ns", - "StdDev": "498.783 ns", + "Mean": "79,312.70 ns", + "Error": "9,428.16 ns", + "StdDev": "516.789 ns", "Gen0": "2.1973", "Gen1": "2.0752", "Allocated": "37600 B" }, { "Method": "'NSubstitute (100 calls)'", - "Mean": "63,140.44 ns", - "Error": "10,488.85 ns", - "StdDev": "574.929 ns", + "Mean": "68,918.59 ns", + "Error": "25,106.46 ns", + "StdDev": "1,376.170 ns", "Gen0": "1.7090", "Gen1": "1.5869", "Allocated": "30848 B" }, { "Method": "'FakeItEasy (100 calls)'", - "Mean": "154,965.78 ns", - "Error": "63,324.58 ns", - "StdDev": "3,471.034 ns", + "Mean": "169,654.16 ns", + "Error": "96,965.08 ns", + "StdDev": "5,314.983 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 92f5ff319e..9d4767917b 100644 --- a/docs/static/benchmarks/mocks/MockCreation.json +++ b/docs/static/benchmarks/mocks/MockCreation.json @@ -1,5 +1,5 @@ { - "timestamp": "2026-05-06T03:25:44.139Z", + "timestamp": "2026-05-07T03:27:11.074Z", "category": "MockCreation", "description": "Mock instance creation performance", "environment": { @@ -10,19 +10,19 @@ "results": [ { "Method": "TUnit.Mocks", - "Mean": "27.66 ns", - "Error": "0.617 ns", - "StdDev": "1.175 ns", - "Gen0": "0.0114", + "Mean": "25.56 ns", + "Error": "0.221 ns", + "StdDev": "0.206 ns", + "Gen0": "0.0115", "Gen1": "-", "Gen2": "-", "Allocated": "192 B" }, { "Method": "Imposter", - "Mean": "103.11 ns", - "Error": "1.050 ns", - "StdDev": "0.931 ns", + "Mean": "90.54 ns", + "Error": "0.555 ns", + "StdDev": "0.463 ns", "Gen0": "0.0262", "Gen1": "-", "Gen2": "-", @@ -30,9 +30,9 @@ }, { "Method": "Mockolate", - "Mean": "65.91 ns", - "Error": "0.488 ns", - "StdDev": "0.456 ns", + "Mean": "60.03 ns", + "Error": "0.338 ns", + "StdDev": "0.300 ns", "Gen0": "0.0253", "Gen1": "-", "Gen2": "-", @@ -40,9 +40,9 @@ }, { "Method": "Moq", - "Mean": "1,305.63 ns", - "Error": "25.930 ns", - "StdDev": "24.255 ns", + "Mean": "1,320.57 ns", + "Error": "18.193 ns", + "StdDev": "16.128 ns", "Gen0": "0.1221", "Gen1": "-", "Gen2": "-", @@ -50,9 +50,9 @@ }, { "Method": "NSubstitute", - "Mean": "1,879.29 ns", - "Error": "11.555 ns", - "StdDev": "10.243 ns", + "Mean": "1,754.76 ns", + "Error": "13.714 ns", + "StdDev": "12.157 ns", "Gen0": "0.2975", "Gen1": "0.0019", "Gen2": "-", @@ -60,9 +60,9 @@ }, { "Method": "FakeItEasy", - "Mean": "1,909.70 ns", - "Error": "29.814 ns", - "StdDev": "27.888 ns", + "Mean": "1,657.70 ns", + "Error": "11.171 ns", + "StdDev": "9.903 ns", "Gen0": "0.1602", "Gen1": "0.0038", "Gen2": "0.0019", @@ -70,19 +70,19 @@ }, { "Method": "'TUnit.Mocks (Repository)'", - "Mean": "27.86 ns", - "Error": "0.096 ns", - "StdDev": "0.080 ns", - "Gen0": "0.0114", + "Mean": "25.40 ns", + "Error": "0.293 ns", + "StdDev": "0.274 ns", + "Gen0": "0.0115", "Gen1": "-", "Gen2": "-", "Allocated": "192 B" }, { "Method": "'Imposter (Repository)'", - "Mean": "162.90 ns", - "Error": "0.636 ns", - "StdDev": "0.595 ns", + "Mean": "141.69 ns", + "Error": "1.229 ns", + "StdDev": "1.089 ns", "Gen0": "0.0415", "Gen1": "-", "Gen2": "-", @@ -90,9 +90,9 @@ }, { "Method": "'Mockolate (Repository)'", - "Mean": "68.79 ns", - "Error": "0.312 ns", - "StdDev": "0.292 ns", + "Mean": "61.27 ns", + "Error": "0.868 ns", + "StdDev": "0.725 ns", "Gen0": "0.0272", "Gen1": "-", "Gen2": "-", @@ -100,9 +100,9 @@ }, { "Method": "'Moq (Repository)'", - "Mean": "1,326.69 ns", - "Error": "19.780 ns", - "StdDev": "18.502 ns", + "Mean": "1,396.39 ns", + "Error": "13.222 ns", + "StdDev": "12.368 ns", "Gen0": "0.1125", "Gen1": "-", "Gen2": "-", @@ -110,9 +110,9 @@ }, { "Method": "'NSubstitute (Repository)'", - "Mean": "1,863.52 ns", - "Error": "15.441 ns", - "StdDev": "14.443 ns", + "Mean": "1,860.03 ns", + "Error": "27.324 ns", + "StdDev": "24.222 ns", "Gen0": "0.2975", "Gen1": "0.0019", "Gen2": "-", @@ -120,9 +120,9 @@ }, { "Method": "'FakeItEasy (Repository)'", - "Mean": "1,811.12 ns", - "Error": "12.890 ns", - "StdDev": "10.764 ns", + "Mean": "1,808.52 ns", + "Error": "31.969 ns", + "StdDev": "36.816 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 220d8e7d5f..79cc58dbc4 100644 --- a/docs/static/benchmarks/mocks/Setup.json +++ b/docs/static/benchmarks/mocks/Setup.json @@ -1,5 +1,5 @@ { - "timestamp": "2026-05-06T03:25:44.139Z", + "timestamp": "2026-05-07T03:27:11.074Z", "category": "Setup", "description": "Mock behavior configuration (returns, matchers)", "environment": { @@ -10,108 +10,108 @@ "results": [ { "Method": "TUnit.Mocks", - "Mean": "420.4 ns", - "Error": "3.42 ns", - "StdDev": "3.20 ns", + "Mean": "442.5 ns", + "Error": "7.28 ns", + "StdDev": "6.81 ns", "Gen0": "0.1225", "Gen1": "0.0005", "Allocated": "2.01 KB" }, { "Method": "Imposter", - "Mean": "761.4 ns", - "Error": "10.18 ns", - "StdDev": "9.53 ns", + "Mean": "911.3 ns", + "Error": "18.19 ns", + "StdDev": "29.89 ns", "Gen0": "0.3738", "Gen1": "0.0076", "Allocated": "6.12 KB" }, { "Method": "Mockolate", - "Mean": "361.2 ns", - "Error": "7.15 ns", - "StdDev": "9.79 ns", + "Mean": "364.2 ns", + "Error": "7.16 ns", + "StdDev": "7.95 ns", "Gen0": "0.1025", "Gen1": "0.0005", "Allocated": "1.68 KB" }, { "Method": "Moq", - "Mean": "426,086.4 ns", - "Error": "1,616.95 ns", - "StdDev": "1,512.49 ns", + "Mean": "431,403.0 ns", + "Error": "2,092.55 ns", + "StdDev": "1,854.99 ns", "Gen0": "0.9766", "Gen1": "-", - "Allocated": "28.69 KB" + "Allocated": "28.64 KB" }, { "Method": "NSubstitute", - "Mean": "5,499.1 ns", - "Error": "78.07 ns", - "StdDev": "73.02 ns", + "Mean": "5,626.7 ns", + "Error": "34.76 ns", + "StdDev": "29.02 ns", "Gen0": "0.5493", "Gen1": "0.0076", - "Allocated": "9.01 KB" + "Allocated": "9.06 KB" }, { "Method": "FakeItEasy", - "Mean": "8,184.3 ns", - "Error": "100.19 ns", - "StdDev": "88.82 ns", + "Mean": "8,246.7 ns", + "Error": "88.84 ns", + "StdDev": "83.10 ns", "Gen0": "0.6104", - "Gen1": "0.0610", + "Gen1": "0.0305", "Allocated": "10.45 KB" }, { "Method": "'TUnit.Mocks (Multiple)'", - "Mean": "603.1 ns", - "Error": "6.26 ns", - "StdDev": "5.55 ns", + "Mean": "636.4 ns", + "Error": "12.75 ns", + "StdDev": "13.10 ns", "Gen0": "0.1574", "Gen1": "0.0010", "Allocated": "2.59 KB" }, { "Method": "'Imposter (Multiple)'", - "Mean": "1,351.6 ns", - "Error": "25.99 ns", - "StdDev": "25.53 ns", + "Mean": "1,409.7 ns", + "Error": "16.41 ns", + "StdDev": "13.71 ns", "Gen0": "0.6485", "Gen1": "0.0248", "Allocated": "10.59 KB" }, { "Method": "'Mockolate (Multiple)'", - "Mean": "603.6 ns", - "Error": "3.16 ns", - "StdDev": "2.95 ns", + "Mean": "644.7 ns", + "Error": "12.93 ns", + "StdDev": "15.40 ns", "Gen0": "0.1726", "Gen1": "0.0010", "Allocated": "2.82 KB" }, { "Method": "'Moq (Multiple)'", - "Mean": "112,461.1 ns", - "Error": "464.25 ns", - "StdDev": "434.26 ns", + "Mean": "114,127.6 ns", + "Error": "523.62 ns", + "StdDev": "489.79 ns", "Gen0": "0.9766", "Gen1": "0.7324", "Allocated": "16.53 KB" }, { "Method": "'NSubstitute (Multiple)'", - "Mean": "11,790.2 ns", - "Error": "90.50 ns", - "StdDev": "80.23 ns", + "Mean": "12,312.4 ns", + "Error": "125.64 ns", + "StdDev": "111.37 ns", "Gen0": "1.2207", "Gen1": "-", "Allocated": "20.31 KB" }, { "Method": "'FakeItEasy (Multiple)'", - "Mean": "7,663.9 ns", - "Error": "78.05 ns", - "StdDev": "65.17 ns", + "Mean": "8,144.3 ns", + "Error": "151.36 ns", + "StdDev": "134.18 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 9b78830355..731a1c21be 100644 --- a/docs/static/benchmarks/mocks/Verification.json +++ b/docs/static/benchmarks/mocks/Verification.json @@ -1,5 +1,5 @@ { - "timestamp": "2026-05-06T03:25:44.139Z", + "timestamp": "2026-05-07T03:27:11.074Z", "category": "Verification", "description": "Verifying mock method calls", "environment": { @@ -10,162 +10,162 @@ "results": [ { "Method": "TUnit.Mocks", - "Mean": "692.20 ns", - "Error": "12.586 ns", - "StdDev": "11.773 ns", + "Mean": "719.38 ns", + "Error": "12.254 ns", + "StdDev": "11.462 ns", "Gen0": "0.1707", "Gen1": "0.0010", "Allocated": "2864 B" }, { "Method": "Imposter", - "Mean": "743.98 ns", - "Error": "13.959 ns", - "StdDev": "13.710 ns", + "Mean": "739.62 ns", + "Error": "14.038 ns", + "StdDev": "24.587 ns", "Gen0": "0.2794", "Gen1": "0.0038", "Allocated": "4688 B" }, { "Method": "Mockolate", - "Mean": "434.71 ns", - "Error": "7.021 ns", - "StdDev": "6.567 ns", + "Mean": "437.41 ns", + "Error": "6.116 ns", + "StdDev": "5.721 ns", "Gen0": "0.1326", "Gen1": "0.0005", "Allocated": "2224 B" }, { "Method": "Moq", - "Mean": "345,187.52 ns", - "Error": "1,881.825 ns", - "StdDev": "1,668.189 ns", + "Mean": "348,573.71 ns", + "Error": "1,467.544 ns", + "StdDev": "1,300.940 ns", "Gen0": "0.9766", "Gen1": "-", "Allocated": "24325 B" }, { "Method": "NSubstitute", - "Mean": "6,509.70 ns", - "Error": "114.123 ns", - "StdDev": "106.751 ns", + "Mean": "6,556.26 ns", + "Error": "66.140 ns", + "StdDev": "61.867 ns", "Gen0": "0.5493", "Gen1": "-", "Allocated": "10064 B" }, { "Method": "FakeItEasy", - "Mean": "7,584.79 ns", - "Error": "42.067 ns", - "StdDev": "39.350 ns", + "Mean": "7,439.71 ns", + "Error": "48.847 ns", + "StdDev": "45.692 ns", "Gen0": "0.6409", "Gen1": "0.0153", "Allocated": "10722 B" }, { "Method": "'TUnit.Mocks (Never)'", - "Mean": "52.59 ns", - "Error": "0.945 ns", - "StdDev": "1.050 ns", + "Mean": "52.80 ns", + "Error": "1.069 ns", + "StdDev": "1.144 ns", "Gen0": "0.0181", "Gen1": "-", "Allocated": "304 B" }, { "Method": "'Imposter (Never)'", - "Mean": "333.44 ns", - "Error": "6.502 ns", - "StdDev": "9.929 ns", + "Mean": "349.18 ns", + "Error": "4.059 ns", + "StdDev": "3.169 ns", "Gen0": "0.1431", "Gen1": "0.0010", "Allocated": "2400 B" }, { "Method": "'Mockolate (Never)'", - "Mean": "242.96 ns", - "Error": "4.825 ns", - "StdDev": "4.739 ns", + "Mean": "272.03 ns", + "Error": "5.307 ns", + "StdDev": "5.679 ns", "Gen0": "0.0739", "Gen1": "-", "Allocated": "1240 B" }, { "Method": "'Moq (Never)'", - "Mean": "88,636.42 ns", - "Error": "299.264 ns", - "StdDev": "265.289 ns", + "Mean": "88,566.54 ns", + "Error": "330.274 ns", + "StdDev": "275.794 ns", "Gen0": "0.2441", "Gen1": "-", "Allocated": "6918 B" }, { "Method": "'NSubstitute (Never)'", - "Mean": "3,716.60 ns", - "Error": "42.887 ns", - "StdDev": "40.116 ns", + "Mean": "3,701.24 ns", + "Error": "47.388 ns", + "StdDev": "44.326 ns", "Gen0": "0.4234", "Gen1": "0.0038", "Allocated": "7088 B" }, { "Method": "'FakeItEasy (Never)'", - "Mean": "3,666.47 ns", - "Error": "72.521 ns", - "StdDev": "77.596 ns", + "Mean": "3,867.28 ns", + "Error": "39.721 ns", + "StdDev": "35.212 ns", "Gen0": "0.3052", "Gen1": "0.0305", "Allocated": "5209 B" }, { "Method": "'TUnit.Mocks (Multiple)'", - "Mean": "1,233.32 ns", - "Error": "16.516 ns", - "StdDev": "15.449 ns", + "Mean": "1,244.55 ns", + "Error": "10.659 ns", + "StdDev": "9.970 ns", "Gen0": "0.2480", "Gen1": "0.0019", "Allocated": "4176 B" }, { "Method": "'Imposter (Multiple)'", - "Mean": "1,897.47 ns", - "Error": "34.183 ns", - "StdDev": "31.975 ns", + "Mean": "1,882.41 ns", + "Error": "31.474 ns", + "StdDev": "29.441 ns", "Gen0": "0.6676", "Gen1": "0.0210", "Allocated": "11192 B" }, { "Method": "'Mockolate (Multiple)'", - "Mean": "1,192.00 ns", - "Error": "23.634 ns", - "StdDev": "41.392 ns", + "Mean": "1,229.93 ns", + "Error": "21.381 ns", + "StdDev": "20.000 ns", "Gen0": "0.3223", "Gen1": "0.0038", "Allocated": "5408 B" }, { "Method": "'Moq (Multiple)'", - "Mean": "467,825.85 ns", - "Error": "2,972.337 ns", - "StdDev": "2,780.326 ns", + "Mean": "485,545.95 ns", + "Error": "2,779.339 ns", + "StdDev": "2,599.795 ns", "Gen0": "1.9531", "Gen1": "0.9766", "Allocated": "34699 B" }, { "Method": "'NSubstitute (Multiple)'", - "Mean": "11,477.50 ns", - "Error": "69.517 ns", - "StdDev": "58.050 ns", + "Mean": "11,567.51 ns", + "Error": "56.901 ns", + "StdDev": "50.442 ns", "Gen0": "0.9918", "Gen1": "0.0153", "Allocated": "16762 B" }, { "Method": "'FakeItEasy (Multiple)'", - "Mean": "13,761.56 ns", - "Error": "216.979 ns", - "StdDev": "192.346 ns", + "Mean": "14,031.00 ns", + "Error": "137.333 ns", + "StdDev": "128.462 ns", "Gen0": "1.0986", "Gen1": "-", "Allocated": "19233 B" diff --git a/docs/static/benchmarks/mocks/latest.json b/docs/static/benchmarks/mocks/latest.json index 9b59c156ac..2a1e7b1863 100644 --- a/docs/static/benchmarks/mocks/latest.json +++ b/docs/static/benchmarks/mocks/latest.json @@ -1,5 +1,5 @@ { - "timestamp": "2026-05-06T03:25:44.139Z", + "timestamp": "2026-05-07T03:27:11.074Z", "environment": { "benchmarkDotNetVersion": "BenchmarkDotNet v0.15.8, Linux Ubuntu 24.04.4 LTS (Noble Numbat)", "sdk": ".NET SDK 10.0.203", @@ -9,108 +9,108 @@ "Callback": [ { "Method": "TUnit.Mocks", - "Mean": "611.7 ns", - "Error": "3.24 ns", - "StdDev": "2.87 ns", + "Mean": "605.0 ns", + "Error": "11.63 ns", + "StdDev": "11.42 ns", "Gen0": "0.1822", "Gen1": "0.0019", "Allocated": "2.98 KB" }, { "Method": "Imposter", - "Mean": "448.0 ns", - "Error": "0.87 ns", - "StdDev": "0.68 ns", - "Gen0": "0.1626", - "Gen1": "0.0014", + "Mean": "488.9 ns", + "Error": "7.92 ns", + "StdDev": "7.02 ns", + "Gen0": "0.1621", + "Gen1": "0.0010", "Allocated": "2.66 KB" }, { "Method": "Mockolate", - "Mean": "354.2 ns", - "Error": "7.05 ns", - "StdDev": "9.88 ns", + "Mean": "356.9 ns", + "Error": "5.00 ns", + "StdDev": "4.67 ns", "Gen0": "0.1154", "Gen1": "0.0005", "Allocated": "1.89 KB" }, { "Method": "Moq", - "Mean": "180,351.2 ns", - "Error": "550.15 ns", - "StdDev": "514.61 ns", + "Mean": "182,052.0 ns", + "Error": "1,447.27 ns", + "StdDev": "1,282.97 ns", "Gen0": "0.4883", "Gen1": "-", "Allocated": "13.14 KB" }, { "Method": "NSubstitute", - "Mean": "4,464.3 ns", - "Error": "20.77 ns", - "StdDev": "18.41 ns", + "Mean": "4,457.5 ns", + "Error": "44.77 ns", + "StdDev": "39.69 ns", "Gen0": "0.4807", "Gen1": "0.0076", "Allocated": "7.93 KB" }, { "Method": "FakeItEasy", - "Mean": "5,063.1 ns", - "Error": "21.07 ns", - "StdDev": "19.71 ns", + "Mean": "5,020.6 ns", + "Error": "63.90 ns", + "StdDev": "59.77 ns", "Gen0": "0.4501", "Gen1": "0.0153", "Allocated": "7.44 KB" }, { "Method": "'TUnit.Mocks (with args)'", - "Mean": "706.7 ns", - "Error": "1.87 ns", - "StdDev": "1.75 ns", + "Mean": "708.9 ns", + "Error": "4.91 ns", + "StdDev": "4.35 ns", "Gen0": "0.1869", "Gen1": "0.0019", "Allocated": "3.06 KB" }, { "Method": "'Imposter (with args)'", - "Mean": "512.7 ns", - "Error": "1.75 ns", - "StdDev": "1.64 ns", + "Mean": "515.8 ns", + "Error": "1.39 ns", + "StdDev": "1.16 ns", "Gen0": "0.1726", "Gen1": "0.0010", "Allocated": "2.82 KB" }, { "Method": "'Mockolate (with args)'", - "Mean": "392.2 ns", - "Error": "1.45 ns", - "StdDev": "1.13 ns", + "Mean": "407.0 ns", + "Error": "1.81 ns", + "StdDev": "1.60 ns", "Gen0": "0.1183", "Gen1": "0.0005", "Allocated": "1.94 KB" }, { "Method": "'Moq (with args)'", - "Mean": "189,124.1 ns", - "Error": "1,331.75 ns", - "StdDev": "1,180.56 ns", + "Mean": "190,047.9 ns", + "Error": "1,366.44 ns", + "StdDev": "1,141.04 ns", "Gen0": "0.4883", "Gen1": "-", "Allocated": "13.73 KB" }, { "Method": "'NSubstitute (with args)'", - "Mean": "5,249.4 ns", - "Error": "81.66 ns", - "StdDev": "72.39 ns", - "Gen0": "0.4883", - "Gen1": "-", + "Mean": "5,119.8 ns", + "Error": "71.54 ns", + "StdDev": "63.42 ns", + "Gen0": "0.5188", + "Gen1": "0.0076", "Allocated": "8.53 KB" }, { "Method": "'FakeItEasy (with args)'", - "Mean": "6,283.3 ns", - "Error": "81.24 ns", - "StdDev": "75.99 ns", + "Mean": "6,508.2 ns", + "Error": "82.74 ns", + "StdDev": "73.34 ns", "Gen0": "0.5493", "Gen1": "0.0610", "Allocated": "9.4 KB" @@ -119,218 +119,218 @@ "CombinedWorkflow": [ { "Method": "TUnit.Mocks", - "Mean": "1.941 μs", - "Error": "0.0141 μs", - "StdDev": "0.0132 μs", - "Gen0": "0.2365", - "Gen1": "0.0038", + "Mean": "1.683 μs", + "Error": "0.0114 μs", + "StdDev": "0.0101 μs", + "Gen0": "0.3548", + "Gen1": "0.0057", "Allocated": "5.8 KB" }, { "Method": "Imposter", - "Mean": "3.112 μs", - "Error": "0.0617 μs", - "StdDev": "0.0633 μs", - "Gen0": "0.6409", - "Gen1": "0.0267", + "Mean": "2.704 μs", + "Error": "0.0536 μs", + "StdDev": "0.0835 μs", + "Gen0": "0.9613", + "Gen1": "0.0458", "Allocated": "15.71 KB" }, { "Method": "Mockolate", - "Mean": "2.406 μs", - "Error": "0.0264 μs", - "StdDev": "0.0247 μs", - "Gen0": "0.3510", - "Gen1": "0.0038", + "Mean": "2.317 μs", + "Error": "0.0459 μs", + "StdDev": "0.0564 μs", + "Gen0": "0.5264", + "Gen1": "0.0076", "Allocated": "8.61 KB" }, { "Method": "Moq", - "Mean": "313.029 μs", - "Error": "1.5935 μs", - "StdDev": "1.4126 μs", - "Gen0": "0.9766", - "Gen1": "-", - "Allocated": "36.33 KB" + "Mean": "406.590 μs", + "Error": "2.0552 μs", + "StdDev": "1.9224 μs", + "Gen0": "1.9531", + "Gen1": "0.9766", + "Allocated": "36.35 KB" }, { "Method": "NSubstitute", - "Mean": "17.050 μs", - "Error": "0.0795 μs", - "StdDev": "0.0621 μs", - "Gen0": "1.0681", + "Mean": "17.535 μs", + "Error": "0.1478 μs", + "StdDev": "0.1311 μs", + "Gen0": "1.6174", "Gen1": "0.0305", "Allocated": "26.72 KB" }, { "Method": "FakeItEasy", - "Mean": "17.629 μs", - "Error": "0.0694 μs", - "StdDev": "0.0649 μs", - "Gen0": "1.0376", + "Mean": "18.353 μs", + "Error": "0.0673 μs", + "StdDev": "0.0562 μs", + "Gen0": "1.5564", "Gen1": "0.0305", - "Allocated": "25.61 KB" + "Allocated": "25.52 KB" } ], "Invocation": [ { "Method": "TUnit.Mocks", - "Mean": "233.02 ns", - "Error": "77.76 ns", - "StdDev": "4.262 ns", + "Mean": "252.11 ns", + "Error": "76.98 ns", + "StdDev": "4.220 ns", "Gen0": "0.0062", "Gen1": "0.0057", "Allocated": "120 B" }, { "Method": "Imposter", - "Mean": "267.71 ns", - "Error": "53.17 ns", - "StdDev": "2.915 ns", + "Mean": "287.71 ns", + "Error": "61.54 ns", + "StdDev": "3.373 ns", "Gen0": "0.0100", "Gen1": "0.0095", "Allocated": "168 B" }, { "Method": "Mockolate", - "Mean": "92.02 ns", - "Error": "20.98 ns", - "StdDev": "1.150 ns", + "Mean": "101.11 ns", + "Error": "39.40 ns", + "StdDev": "2.160 ns", "Gen0": "0.0050", - "Gen1": "0.0049", + "Gen1": "0.0048", "Allocated": "84 B" }, { "Method": "Moq", - "Mean": "713.40 ns", - "Error": "260.71 ns", - "StdDev": "14.290 ns", + "Mean": "785.48 ns", + "Error": "113.60 ns", + "StdDev": "6.227 ns", "Gen0": "0.0219", "Gen1": "0.0210", "Allocated": "376 B" }, { "Method": "NSubstitute", - "Mean": "673.83 ns", - "Error": "142.09 ns", - "StdDev": "7.789 ns", - "Gen0": "0.0200", - "Gen1": "0.0191", - "Allocated": "360 B" + "Mean": "693.53 ns", + "Error": "314.80 ns", + "StdDev": "17.255 ns", + "Gen0": "0.0172", + "Gen1": "0.0162", + "Allocated": "304 B" }, { "Method": "FakeItEasy", - "Mean": "1,531.74 ns", - "Error": "376.17 ns", - "StdDev": "20.619 ns", + "Mean": "1,678.21 ns", + "Error": "253.33 ns", + "StdDev": "13.886 ns", "Gen0": "0.0553", "Gen1": "0.0534", "Allocated": "944 B" }, { "Method": "'TUnit.Mocks (String)'", - "Mean": "144.21 ns", - "Error": "67.99 ns", - "StdDev": "3.727 ns", + "Mean": "152.16 ns", + "Error": "64.48 ns", + "StdDev": "3.534 ns", "Gen0": "0.0048", "Gen1": "0.0045", "Allocated": "88 B" }, { "Method": "'Imposter (String)'", - "Mean": "266.34 ns", - "Error": "97.99 ns", - "StdDev": "5.371 ns", + "Mean": "291.60 ns", + "Error": "92.81 ns", + "StdDev": "5.087 ns", "Gen0": "0.0100", "Gen1": "0.0095", "Allocated": "168 B" }, { "Method": "'Mockolate (String)'", - "Mean": "83.62 ns", - "Error": "13.86 ns", - "StdDev": "0.760 ns", + "Mean": "93.12 ns", + "Error": "45.83 ns", + "StdDev": "2.512 ns", "Gen0": "0.0036", "Gen1": "0.0035", "Allocated": "60 B" }, { "Method": "'Moq (String)'", - "Mean": "481.25 ns", - "Error": "39.23 ns", - "StdDev": "2.150 ns", + "Mean": "546.32 ns", + "Error": "42.56 ns", + "StdDev": "2.333 ns", "Gen0": "0.0172", "Gen1": "0.0162", "Allocated": "296 B" }, { "Method": "'NSubstitute (String)'", - "Mean": "589.46 ns", - "Error": "63.31 ns", - "StdDev": "3.470 ns", + "Mean": "614.45 ns", + "Error": "136.78 ns", + "StdDev": "7.498 ns", "Gen0": "0.0153", "Gen1": "0.0143", "Allocated": "272 B" }, { "Method": "'FakeItEasy (String)'", - "Mean": "1,377.74 ns", - "Error": "231.05 ns", - "StdDev": "12.665 ns", + "Mean": "1,520.86 ns", + "Error": "468.61 ns", + "StdDev": "25.686 ns", "Gen0": "0.0458", "Gen1": "0.0439", "Allocated": "776 B" }, { "Method": "'TUnit.Mocks (100 calls)'", - "Mean": "23,685.24 ns", - "Error": "9,145.49 ns", - "StdDev": "501.295 ns", + "Mean": "25,281.98 ns", + "Error": "10,902.54 ns", + "StdDev": "597.605 ns", "Gen0": "0.6104", "Gen1": "0.5798", "Allocated": "11936 B" }, { "Method": "'Imposter (100 calls)'", - "Mean": "26,672.96 ns", - "Error": "730.92 ns", - "StdDev": "40.064 ns", + "Mean": "28,233.68 ns", + "Error": "8,459.15 ns", + "StdDev": "463.674 ns", "Gen0": "0.9766", "Gen1": "0.9155", "Allocated": "16800 B" }, { "Method": "'Mockolate (100 calls)'", - "Mean": "9,008.94 ns", - "Error": "1,871.82 ns", - "StdDev": "102.601 ns", + "Mean": "9,890.21 ns", + "Error": "2,103.03 ns", + "StdDev": "115.274 ns", "Gen0": "0.4883", "Gen1": "0.4730", "Allocated": "8400 B" }, { "Method": "'Moq (100 calls)'", - "Mean": "69,538.52 ns", - "Error": "9,099.66 ns", - "StdDev": "498.783 ns", + "Mean": "79,312.70 ns", + "Error": "9,428.16 ns", + "StdDev": "516.789 ns", "Gen0": "2.1973", "Gen1": "2.0752", "Allocated": "37600 B" }, { "Method": "'NSubstitute (100 calls)'", - "Mean": "63,140.44 ns", - "Error": "10,488.85 ns", - "StdDev": "574.929 ns", + "Mean": "68,918.59 ns", + "Error": "25,106.46 ns", + "StdDev": "1,376.170 ns", "Gen0": "1.7090", "Gen1": "1.5869", "Allocated": "30848 B" }, { "Method": "'FakeItEasy (100 calls)'", - "Mean": "154,965.78 ns", - "Error": "63,324.58 ns", - "StdDev": "3,471.034 ns", + "Mean": "169,654.16 ns", + "Error": "96,965.08 ns", + "StdDev": "5,314.983 ns", "Gen0": "5.6152", "Gen1": "5.3711", "Allocated": "94400 B" @@ -339,19 +339,19 @@ "MockCreation": [ { "Method": "TUnit.Mocks", - "Mean": "27.66 ns", - "Error": "0.617 ns", - "StdDev": "1.175 ns", - "Gen0": "0.0114", + "Mean": "25.56 ns", + "Error": "0.221 ns", + "StdDev": "0.206 ns", + "Gen0": "0.0115", "Gen1": "-", "Gen2": "-", "Allocated": "192 B" }, { "Method": "Imposter", - "Mean": "103.11 ns", - "Error": "1.050 ns", - "StdDev": "0.931 ns", + "Mean": "90.54 ns", + "Error": "0.555 ns", + "StdDev": "0.463 ns", "Gen0": "0.0262", "Gen1": "-", "Gen2": "-", @@ -359,9 +359,9 @@ }, { "Method": "Mockolate", - "Mean": "65.91 ns", - "Error": "0.488 ns", - "StdDev": "0.456 ns", + "Mean": "60.03 ns", + "Error": "0.338 ns", + "StdDev": "0.300 ns", "Gen0": "0.0253", "Gen1": "-", "Gen2": "-", @@ -369,9 +369,9 @@ }, { "Method": "Moq", - "Mean": "1,305.63 ns", - "Error": "25.930 ns", - "StdDev": "24.255 ns", + "Mean": "1,320.57 ns", + "Error": "18.193 ns", + "StdDev": "16.128 ns", "Gen0": "0.1221", "Gen1": "-", "Gen2": "-", @@ -379,9 +379,9 @@ }, { "Method": "NSubstitute", - "Mean": "1,879.29 ns", - "Error": "11.555 ns", - "StdDev": "10.243 ns", + "Mean": "1,754.76 ns", + "Error": "13.714 ns", + "StdDev": "12.157 ns", "Gen0": "0.2975", "Gen1": "0.0019", "Gen2": "-", @@ -389,9 +389,9 @@ }, { "Method": "FakeItEasy", - "Mean": "1,909.70 ns", - "Error": "29.814 ns", - "StdDev": "27.888 ns", + "Mean": "1,657.70 ns", + "Error": "11.171 ns", + "StdDev": "9.903 ns", "Gen0": "0.1602", "Gen1": "0.0038", "Gen2": "0.0019", @@ -399,19 +399,19 @@ }, { "Method": "'TUnit.Mocks (Repository)'", - "Mean": "27.86 ns", - "Error": "0.096 ns", - "StdDev": "0.080 ns", - "Gen0": "0.0114", + "Mean": "25.40 ns", + "Error": "0.293 ns", + "StdDev": "0.274 ns", + "Gen0": "0.0115", "Gen1": "-", "Gen2": "-", "Allocated": "192 B" }, { "Method": "'Imposter (Repository)'", - "Mean": "162.90 ns", - "Error": "0.636 ns", - "StdDev": "0.595 ns", + "Mean": "141.69 ns", + "Error": "1.229 ns", + "StdDev": "1.089 ns", "Gen0": "0.0415", "Gen1": "-", "Gen2": "-", @@ -419,9 +419,9 @@ }, { "Method": "'Mockolate (Repository)'", - "Mean": "68.79 ns", - "Error": "0.312 ns", - "StdDev": "0.292 ns", + "Mean": "61.27 ns", + "Error": "0.868 ns", + "StdDev": "0.725 ns", "Gen0": "0.0272", "Gen1": "-", "Gen2": "-", @@ -429,9 +429,9 @@ }, { "Method": "'Moq (Repository)'", - "Mean": "1,326.69 ns", - "Error": "19.780 ns", - "StdDev": "18.502 ns", + "Mean": "1,396.39 ns", + "Error": "13.222 ns", + "StdDev": "12.368 ns", "Gen0": "0.1125", "Gen1": "-", "Gen2": "-", @@ -439,9 +439,9 @@ }, { "Method": "'NSubstitute (Repository)'", - "Mean": "1,863.52 ns", - "Error": "15.441 ns", - "StdDev": "14.443 ns", + "Mean": "1,860.03 ns", + "Error": "27.324 ns", + "StdDev": "24.222 ns", "Gen0": "0.2975", "Gen1": "0.0019", "Gen2": "-", @@ -449,9 +449,9 @@ }, { "Method": "'FakeItEasy (Repository)'", - "Mean": "1,811.12 ns", - "Error": "12.890 ns", - "StdDev": "10.764 ns", + "Mean": "1,808.52 ns", + "Error": "31.969 ns", + "StdDev": "36.816 ns", "Gen0": "0.1602", "Gen1": "0.0038", "Gen2": "0.0019", @@ -461,108 +461,108 @@ "Setup": [ { "Method": "TUnit.Mocks", - "Mean": "420.4 ns", - "Error": "3.42 ns", - "StdDev": "3.20 ns", + "Mean": "442.5 ns", + "Error": "7.28 ns", + "StdDev": "6.81 ns", "Gen0": "0.1225", "Gen1": "0.0005", "Allocated": "2.01 KB" }, { "Method": "Imposter", - "Mean": "761.4 ns", - "Error": "10.18 ns", - "StdDev": "9.53 ns", + "Mean": "911.3 ns", + "Error": "18.19 ns", + "StdDev": "29.89 ns", "Gen0": "0.3738", "Gen1": "0.0076", "Allocated": "6.12 KB" }, { "Method": "Mockolate", - "Mean": "361.2 ns", - "Error": "7.15 ns", - "StdDev": "9.79 ns", + "Mean": "364.2 ns", + "Error": "7.16 ns", + "StdDev": "7.95 ns", "Gen0": "0.1025", "Gen1": "0.0005", "Allocated": "1.68 KB" }, { "Method": "Moq", - "Mean": "426,086.4 ns", - "Error": "1,616.95 ns", - "StdDev": "1,512.49 ns", + "Mean": "431,403.0 ns", + "Error": "2,092.55 ns", + "StdDev": "1,854.99 ns", "Gen0": "0.9766", "Gen1": "-", - "Allocated": "28.69 KB" + "Allocated": "28.64 KB" }, { "Method": "NSubstitute", - "Mean": "5,499.1 ns", - "Error": "78.07 ns", - "StdDev": "73.02 ns", + "Mean": "5,626.7 ns", + "Error": "34.76 ns", + "StdDev": "29.02 ns", "Gen0": "0.5493", "Gen1": "0.0076", - "Allocated": "9.01 KB" + "Allocated": "9.06 KB" }, { "Method": "FakeItEasy", - "Mean": "8,184.3 ns", - "Error": "100.19 ns", - "StdDev": "88.82 ns", + "Mean": "8,246.7 ns", + "Error": "88.84 ns", + "StdDev": "83.10 ns", "Gen0": "0.6104", - "Gen1": "0.0610", + "Gen1": "0.0305", "Allocated": "10.45 KB" }, { "Method": "'TUnit.Mocks (Multiple)'", - "Mean": "603.1 ns", - "Error": "6.26 ns", - "StdDev": "5.55 ns", + "Mean": "636.4 ns", + "Error": "12.75 ns", + "StdDev": "13.10 ns", "Gen0": "0.1574", "Gen1": "0.0010", "Allocated": "2.59 KB" }, { "Method": "'Imposter (Multiple)'", - "Mean": "1,351.6 ns", - "Error": "25.99 ns", - "StdDev": "25.53 ns", + "Mean": "1,409.7 ns", + "Error": "16.41 ns", + "StdDev": "13.71 ns", "Gen0": "0.6485", "Gen1": "0.0248", "Allocated": "10.59 KB" }, { "Method": "'Mockolate (Multiple)'", - "Mean": "603.6 ns", - "Error": "3.16 ns", - "StdDev": "2.95 ns", + "Mean": "644.7 ns", + "Error": "12.93 ns", + "StdDev": "15.40 ns", "Gen0": "0.1726", "Gen1": "0.0010", "Allocated": "2.82 KB" }, { "Method": "'Moq (Multiple)'", - "Mean": "112,461.1 ns", - "Error": "464.25 ns", - "StdDev": "434.26 ns", + "Mean": "114,127.6 ns", + "Error": "523.62 ns", + "StdDev": "489.79 ns", "Gen0": "0.9766", "Gen1": "0.7324", "Allocated": "16.53 KB" }, { "Method": "'NSubstitute (Multiple)'", - "Mean": "11,790.2 ns", - "Error": "90.50 ns", - "StdDev": "80.23 ns", + "Mean": "12,312.4 ns", + "Error": "125.64 ns", + "StdDev": "111.37 ns", "Gen0": "1.2207", "Gen1": "-", "Allocated": "20.31 KB" }, { "Method": "'FakeItEasy (Multiple)'", - "Mean": "7,663.9 ns", - "Error": "78.05 ns", - "StdDev": "65.17 ns", + "Mean": "8,144.3 ns", + "Error": "151.36 ns", + "StdDev": "134.18 ns", "Gen0": "0.6714", "Gen1": "0.0610", "Allocated": "11.71 KB" @@ -571,162 +571,162 @@ "Verification": [ { "Method": "TUnit.Mocks", - "Mean": "692.20 ns", - "Error": "12.586 ns", - "StdDev": "11.773 ns", + "Mean": "719.38 ns", + "Error": "12.254 ns", + "StdDev": "11.462 ns", "Gen0": "0.1707", "Gen1": "0.0010", "Allocated": "2864 B" }, { "Method": "Imposter", - "Mean": "743.98 ns", - "Error": "13.959 ns", - "StdDev": "13.710 ns", + "Mean": "739.62 ns", + "Error": "14.038 ns", + "StdDev": "24.587 ns", "Gen0": "0.2794", "Gen1": "0.0038", "Allocated": "4688 B" }, { "Method": "Mockolate", - "Mean": "434.71 ns", - "Error": "7.021 ns", - "StdDev": "6.567 ns", + "Mean": "437.41 ns", + "Error": "6.116 ns", + "StdDev": "5.721 ns", "Gen0": "0.1326", "Gen1": "0.0005", "Allocated": "2224 B" }, { "Method": "Moq", - "Mean": "345,187.52 ns", - "Error": "1,881.825 ns", - "StdDev": "1,668.189 ns", + "Mean": "348,573.71 ns", + "Error": "1,467.544 ns", + "StdDev": "1,300.940 ns", "Gen0": "0.9766", "Gen1": "-", "Allocated": "24325 B" }, { "Method": "NSubstitute", - "Mean": "6,509.70 ns", - "Error": "114.123 ns", - "StdDev": "106.751 ns", + "Mean": "6,556.26 ns", + "Error": "66.140 ns", + "StdDev": "61.867 ns", "Gen0": "0.5493", "Gen1": "-", "Allocated": "10064 B" }, { "Method": "FakeItEasy", - "Mean": "7,584.79 ns", - "Error": "42.067 ns", - "StdDev": "39.350 ns", + "Mean": "7,439.71 ns", + "Error": "48.847 ns", + "StdDev": "45.692 ns", "Gen0": "0.6409", "Gen1": "0.0153", "Allocated": "10722 B" }, { "Method": "'TUnit.Mocks (Never)'", - "Mean": "52.59 ns", - "Error": "0.945 ns", - "StdDev": "1.050 ns", + "Mean": "52.80 ns", + "Error": "1.069 ns", + "StdDev": "1.144 ns", "Gen0": "0.0181", "Gen1": "-", "Allocated": "304 B" }, { "Method": "'Imposter (Never)'", - "Mean": "333.44 ns", - "Error": "6.502 ns", - "StdDev": "9.929 ns", + "Mean": "349.18 ns", + "Error": "4.059 ns", + "StdDev": "3.169 ns", "Gen0": "0.1431", "Gen1": "0.0010", "Allocated": "2400 B" }, { "Method": "'Mockolate (Never)'", - "Mean": "242.96 ns", - "Error": "4.825 ns", - "StdDev": "4.739 ns", + "Mean": "272.03 ns", + "Error": "5.307 ns", + "StdDev": "5.679 ns", "Gen0": "0.0739", "Gen1": "-", "Allocated": "1240 B" }, { "Method": "'Moq (Never)'", - "Mean": "88,636.42 ns", - "Error": "299.264 ns", - "StdDev": "265.289 ns", + "Mean": "88,566.54 ns", + "Error": "330.274 ns", + "StdDev": "275.794 ns", "Gen0": "0.2441", "Gen1": "-", "Allocated": "6918 B" }, { "Method": "'NSubstitute (Never)'", - "Mean": "3,716.60 ns", - "Error": "42.887 ns", - "StdDev": "40.116 ns", + "Mean": "3,701.24 ns", + "Error": "47.388 ns", + "StdDev": "44.326 ns", "Gen0": "0.4234", "Gen1": "0.0038", "Allocated": "7088 B" }, { "Method": "'FakeItEasy (Never)'", - "Mean": "3,666.47 ns", - "Error": "72.521 ns", - "StdDev": "77.596 ns", + "Mean": "3,867.28 ns", + "Error": "39.721 ns", + "StdDev": "35.212 ns", "Gen0": "0.3052", "Gen1": "0.0305", "Allocated": "5209 B" }, { "Method": "'TUnit.Mocks (Multiple)'", - "Mean": "1,233.32 ns", - "Error": "16.516 ns", - "StdDev": "15.449 ns", + "Mean": "1,244.55 ns", + "Error": "10.659 ns", + "StdDev": "9.970 ns", "Gen0": "0.2480", "Gen1": "0.0019", "Allocated": "4176 B" }, { "Method": "'Imposter (Multiple)'", - "Mean": "1,897.47 ns", - "Error": "34.183 ns", - "StdDev": "31.975 ns", + "Mean": "1,882.41 ns", + "Error": "31.474 ns", + "StdDev": "29.441 ns", "Gen0": "0.6676", "Gen1": "0.0210", "Allocated": "11192 B" }, { "Method": "'Mockolate (Multiple)'", - "Mean": "1,192.00 ns", - "Error": "23.634 ns", - "StdDev": "41.392 ns", + "Mean": "1,229.93 ns", + "Error": "21.381 ns", + "StdDev": "20.000 ns", "Gen0": "0.3223", "Gen1": "0.0038", "Allocated": "5408 B" }, { "Method": "'Moq (Multiple)'", - "Mean": "467,825.85 ns", - "Error": "2,972.337 ns", - "StdDev": "2,780.326 ns", + "Mean": "485,545.95 ns", + "Error": "2,779.339 ns", + "StdDev": "2,599.795 ns", "Gen0": "1.9531", "Gen1": "0.9766", "Allocated": "34699 B" }, { "Method": "'NSubstitute (Multiple)'", - "Mean": "11,477.50 ns", - "Error": "69.517 ns", - "StdDev": "58.050 ns", + "Mean": "11,567.51 ns", + "Error": "56.901 ns", + "StdDev": "50.442 ns", "Gen0": "0.9918", "Gen1": "0.0153", "Allocated": "16762 B" }, { "Method": "'FakeItEasy (Multiple)'", - "Mean": "13,761.56 ns", - "Error": "216.979 ns", - "StdDev": "192.346 ns", + "Mean": "14,031.00 ns", + "Error": "137.333 ns", + "StdDev": "128.462 ns", "Gen0": "1.0986", "Gen1": "-", "Allocated": "19233 B" @@ -736,6 +736,6 @@ "stats": { "categoryCount": 6, "totalBenchmarks": 78, - "lastUpdated": "2026-05-06T03:25:44.139Z" + "lastUpdated": "2026-05-07T03:27:11.074Z" } } \ No newline at end of file diff --git a/docs/static/benchmarks/mocks/summary.json b/docs/static/benchmarks/mocks/summary.json index 1a81b1ff8c..82e9a6d05c 100644 --- a/docs/static/benchmarks/mocks/summary.json +++ b/docs/static/benchmarks/mocks/summary.json @@ -7,7 +7,7 @@ "Setup", "Verification" ], - "timestamp": "2026-05-06", + "timestamp": "2026-05-07", "environment": "Ubuntu Latest • .NET SDK 10.0.203", "libraries": [ "TUnit.Mocks",