diff --git a/docs/docs/benchmarks/mocks/Callback.md b/docs/docs/benchmarks/mocks/Callback.md index 2b4e063d32..6b9cba867b 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-26** from the latest CI run. +This benchmark was automatically generated on **2026-05-27** from the latest CI run. **Environment:** Ubuntu Latest • .NET SDK 10.0.300 ::: @@ -18,12 +18,12 @@ Callback registration and execution: | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **TUnit.Mocks** | 668.2 ns | 2.21 ns | 1.96 ns | 3.08 KB | -| Imposter | 487.8 ns | 2.57 ns | 2.28 ns | 2.66 KB | -| Mockolate | 346.0 ns | 2.11 ns | 1.87 ns | 1.91 KB | -| Moq | 135,973.7 ns | 978.00 ns | 866.97 ns | 13.15 KB | -| NSubstitute | 4,044.3 ns | 42.81 ns | 35.75 ns | 7.93 KB | -| FakeItEasy | 4,499.5 ns | 39.30 ns | 36.76 ns | 7.44 KB | +| **TUnit.Mocks** | 641.6 ns | 3.57 ns | 2.98 ns | 3.08 KB | +| Imposter | 473.3 ns | 4.44 ns | 4.16 ns | 2.66 KB | +| Mockolate | 345.9 ns | 1.45 ns | 1.36 ns | 1.91 KB | +| Moq | 134,443.3 ns | 671.84 ns | 561.02 ns | 13.15 KB | +| NSubstitute | 4,139.0 ns | 63.70 ns | 59.59 ns | 7.93 KB | +| FakeItEasy | 4,535.8 ns | 27.28 ns | 22.78 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 --> 163169 - bar [668.2, 487.8, 346, 135973.7, 4044.3, 4499.5] + y-axis "Time (ns)" 0 --> 161332 + bar [641.6, 473.3, 345.9, 134443.3, 4139, 4535.8] ``` --- @@ -59,12 +59,12 @@ xychart-beta | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **TUnit.Mocks** | 755.9 ns | 6.16 ns | 5.46 ns | 3.16 KB | -| Imposter | 544.2 ns | 5.55 ns | 4.92 ns | 2.82 KB | -| Mockolate | 386.9 ns | 1.58 ns | 1.23 ns | 1.95 KB | -| Moq | 142,414.3 ns | 1,191.32 ns | 1,114.36 ns | 13.73 KB | -| NSubstitute | 4,686.3 ns | 19.08 ns | 17.85 ns | 8.53 KB | -| FakeItEasy | 5,427.7 ns | 25.37 ns | 21.18 ns | 9.4 KB | +| **TUnit.Mocks** | 859.4 ns | 6.15 ns | 5.45 ns | 3.16 KB | +| Imposter | 533.2 ns | 2.53 ns | 2.11 ns | 2.82 KB | +| Mockolate | 387.6 ns | 1.79 ns | 1.59 ns | 1.95 KB | +| Moq | 146,925.2 ns | 1,893.35 ns | 1,771.04 ns | 13.73 KB | +| NSubstitute | 4,704.6 ns | 48.45 ns | 45.32 ns | 8.53 KB | +| FakeItEasy | 5,463.5 ns | 36.45 ns | 32.32 ns | 9.26 KB | ```mermaid %%{init: { @@ -90,8 +90,8 @@ xychart-beta xychart-beta title "Callback (with args) Performance Comparison" x-axis ["TUnit.Mocks", "Imposter", "Mockolate", "Moq", "NSubstitute", "FakeItEasy"] - y-axis "Time (ns)" 0 --> 170898 - bar [755.9, 544.2, 386.9, 142414.3, 4686.3, 5427.7] + y-axis "Time (ns)" 0 --> 176311 + bar [859.4, 533.2, 387.6, 146925.2, 4704.6, 5463.5] ``` ## 🎯 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-26T03:27:58.119Z* +*Last generated: 2026-05-27T03:29:35.677Z* diff --git a/docs/docs/benchmarks/mocks/CombinedWorkflow.md b/docs/docs/benchmarks/mocks/CombinedWorkflow.md index 59d8f4d915..f2e4a5a777 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-26** from the latest CI run. +This benchmark was automatically generated on **2026-05-27** from the latest CI run. **Environment:** Ubuntu Latest • .NET SDK 10.0.300 ::: @@ -18,12 +18,12 @@ Full workflow: create → setup → invoke → verify: | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **TUnit.Mocks** | 1.865 μs | 0.0367 μs | 0.0360 μs | 6.11 KB | -| Imposter | 2.639 μs | 0.0528 μs | 0.0925 μs | 15.71 KB | -| Mockolate | 1.714 μs | 0.0338 μs | 0.0601 μs | 7.63 KB | -| Moq | 316.243 μs | 2.2704 μs | 2.0126 μs | 36.16 KB | -| NSubstitute | 16.613 μs | 0.1080 μs | 0.1010 μs | 26.72 KB | -| FakeItEasy | 15.737 μs | 0.2489 μs | 0.2328 μs | 25.52 KB | +| **TUnit.Mocks** | 1.886 μs | 0.0233 μs | 0.0206 μs | 6.11 KB | +| Imposter | 2.568 μs | 0.0511 μs | 0.0589 μs | 15.71 KB | +| Mockolate | 1.834 μs | 0.0244 μs | 0.0204 μs | 7.63 KB | +| Moq | 315.512 μs | 2.8785 μs | 2.5517 μs | 36.35 KB | +| NSubstitute | 15.831 μs | 0.0970 μs | 0.0860 μs | 26.72 KB | +| FakeItEasy | 15.633 μs | 0.2835 μs | 0.2652 μ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 --> 380 - bar [1.865, 2.639, 1.714, 316.243, 16.613, 15.737] + y-axis "Time (μs)" 0 --> 379 + bar [1.886, 2.568, 1.834, 315.512, 15.831, 15.633] ``` ## 🎯 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-26T03:27:58.119Z* +*Last generated: 2026-05-27T03:29:35.677Z* diff --git a/docs/docs/benchmarks/mocks/Invocation.md b/docs/docs/benchmarks/mocks/Invocation.md index 783097b52c..aec469e006 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-26** from the latest CI run. +This benchmark was automatically generated on **2026-05-27** from the latest CI run. **Environment:** Ubuntu Latest • .NET SDK 10.0.300 ::: @@ -18,12 +18,12 @@ Calling methods on mock objects: | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **TUnit.Mocks** | 266.37 ns | 70.95 ns | 3.889 ns | 120 B | -| Imposter | 299.92 ns | 18.43 ns | 1.010 ns | 168 B | -| Mockolate | 127.28 ns | 14.44 ns | 0.791 ns | 84 B | -| Moq | 819.40 ns | 489.19 ns | 26.814 ns | 376 B | -| NSubstitute | 745.44 ns | 131.71 ns | 7.220 ns | 304 B | -| FakeItEasy | 2,031.36 ns | 454.12 ns | 24.892 ns | 944 B | +| **TUnit.Mocks** | 270.4 ns | 87.16 ns | 4.78 ns | 120 B | +| Imposter | 312.3 ns | 105.21 ns | 5.77 ns | 168 B | +| Mockolate | 118.1 ns | 92.05 ns | 5.05 ns | 84 B | +| Moq | 868.5 ns | 221.16 ns | 12.12 ns | 376 B | +| NSubstitute | 774.5 ns | 142.72 ns | 7.82 ns | 304 B | +| FakeItEasy | 1,983.0 ns | 338.98 ns | 18.58 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 --> 2438 - bar [266.37, 299.92, 127.28, 819.4, 745.44, 2031.36] + y-axis "Time (ns)" 0 --> 2380 + bar [270.4, 312.3, 118.1, 868.5, 774.5, 1983] ``` --- @@ -59,12 +59,12 @@ xychart-beta | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **TUnit.Mocks** | 160.37 ns | 71.06 ns | 3.895 ns | 88 B | -| Imposter | 299.72 ns | 172.64 ns | 9.463 ns | 168 B | -| Mockolate | 95.72 ns | 74.38 ns | 4.077 ns | 60 B | -| Moq | 514.31 ns | 62.90 ns | 3.448 ns | 296 B | -| NSubstitute | 601.13 ns | 262.05 ns | 14.364 ns | 272 B | -| FakeItEasy | 1,485.52 ns | 106.14 ns | 5.818 ns | 776 B | +| **TUnit.Mocks** | 161.5 ns | 80.59 ns | 4.42 ns | 88 B | +| Imposter | 312.3 ns | 99.51 ns | 5.45 ns | 168 B | +| Mockolate | 124.4 ns | 58.79 ns | 3.22 ns | 60 B | +| Moq | 630.9 ns | 297.78 ns | 16.32 ns | 296 B | +| NSubstitute | 734.8 ns | 103.10 ns | 5.65 ns | 328 B | +| FakeItEasy | 1,806.2 ns | 195.11 ns | 10.69 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 --> 1783 - bar [160.37, 299.72, 95.72, 514.31, 601.13, 1485.52] + y-axis "Time (ns)" 0 --> 2168 + bar [161.5, 312.3, 124.4, 630.9, 734.8, 1806.2] ``` --- @@ -100,12 +100,12 @@ xychart-beta | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **TUnit.Mocks** | 25,979.39 ns | 9,532.60 ns | 522.514 ns | 11936 B | -| Imposter | 29,063.61 ns | 10,948.92 ns | 600.147 ns | 16800 B | -| Mockolate | 9,783.73 ns | 1,625.23 ns | 89.084 ns | 8400 B | -| Moq | 78,221.85 ns | 21,526.57 ns | 1,179.944 ns | 37600 B | -| NSubstitute | 69,453.97 ns | 13,579.64 ns | 744.346 ns | 30848 B | -| FakeItEasy | 167,866.12 ns | 44,812.34 ns | 2,456.315 ns | 94400 B | +| **TUnit.Mocks** | 27,090.1 ns | 10,775.05 ns | 590.62 ns | 11936 B | +| Imposter | 30,628.9 ns | 6,499.86 ns | 356.28 ns | 16800 B | +| Mockolate | 13,117.9 ns | 4,809.80 ns | 263.64 ns | 8400 B | +| Moq | 88,139.7 ns | 19,796.37 ns | 1,085.11 ns | 37600 B | +| NSubstitute | 79,799.2 ns | 27,093.46 ns | 1,485.08 ns | 30848 B | +| FakeItEasy | 189,034.3 ns | 100,257.58 ns | 5,495.46 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 --> 201440 - bar [25979.39, 29063.61, 9783.73, 78221.85, 69453.97, 167866.12] + y-axis "Time (ns)" 0 --> 226842 + bar [27090.1, 30628.9, 13117.9, 88139.7, 79799.2, 189034.3] ``` ## 🎯 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-26T03:27:58.119Z* +*Last generated: 2026-05-27T03:29:35.677Z* diff --git a/docs/docs/benchmarks/mocks/MockCreation.md b/docs/docs/benchmarks/mocks/MockCreation.md index f4239806f2..c9a52f0b27 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-26** from the latest CI run. +This benchmark was automatically generated on **2026-05-27** from the latest CI run. **Environment:** Ubuntu Latest • .NET SDK 10.0.300 ::: @@ -18,12 +18,12 @@ Mock instance creation performance: | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **TUnit.Mocks** | 26.13 ns | 0.204 ns | 0.191 ns | 192 B | -| Imposter | 106.90 ns | 2.106 ns | 2.069 ns | 440 B | -| Mockolate | 61.44 ns | 0.312 ns | 0.277 ns | 424 B | -| Moq | 1,244.49 ns | 14.417 ns | 13.485 ns | 2048 B | -| NSubstitute | 1,674.31 ns | 6.676 ns | 5.575 ns | 5000 B | -| FakeItEasy | 1,580.04 ns | 5.243 ns | 4.648 ns | 2715 B | +| **TUnit.Mocks** | 26.42 ns | 0.590 ns | 0.724 ns | 192 B | +| Imposter | 93.27 ns | 1.856 ns | 2.137 ns | 440 B | +| Mockolate | 60.05 ns | 1.265 ns | 2.881 ns | 424 B | +| Moq | 1,313.15 ns | 17.484 ns | 16.355 ns | 2048 B | +| NSubstitute | 1,850.64 ns | 33.942 ns | 31.750 ns | 5000 B | +| FakeItEasy | 1,779.77 ns | 34.314 ns | 40.849 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 --> 2010 - bar [26.13, 106.9, 61.44, 1244.49, 1674.31, 1580.04] + y-axis "Time (ns)" 0 --> 2221 + bar [26.42, 93.27, 60.05, 1313.15, 1850.64, 1779.77] ``` --- @@ -59,12 +59,12 @@ xychart-beta | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **TUnit.Mocks** | 26.30 ns | 0.183 ns | 0.163 ns | 192 B | -| Imposter | 148.78 ns | 0.500 ns | 0.443 ns | 696 B | -| Mockolate | 63.25 ns | 0.430 ns | 0.381 ns | 456 B | -| Moq | 1,250.84 ns | 19.706 ns | 16.455 ns | 1912 B | -| NSubstitute | 1,717.91 ns | 4.914 ns | 4.104 ns | 5000 B | -| FakeItEasy | 1,622.80 ns | 32.448 ns | 31.869 ns | 2715 B | +| **TUnit.Mocks** | 26.17 ns | 0.589 ns | 1.120 ns | 192 B | +| Imposter | 138.16 ns | 2.846 ns | 4.755 ns | 696 B | +| Mockolate | 68.07 ns | 1.405 ns | 2.060 ns | 456 B | +| Moq | 1,326.76 ns | 10.767 ns | 10.072 ns | 1912 B | +| NSubstitute | 1,933.82 ns | 34.247 ns | 32.035 ns | 5000 B | +| FakeItEasy | 1,800.68 ns | 34.680 ns | 37.108 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 --> 2062 - bar [26.3, 148.78, 63.25, 1250.84, 1717.91, 1622.8] + y-axis "Time (ns)" 0 --> 2321 + bar [26.17, 138.16, 68.07, 1326.76, 1933.82, 1800.68] ``` ## 🎯 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-26T03:27:58.119Z* +*Last generated: 2026-05-27T03:29:35.677Z* diff --git a/docs/docs/benchmarks/mocks/Setup.md b/docs/docs/benchmarks/mocks/Setup.md index a9b7498eb9..0eac7ac3e5 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-26** from the latest CI run. +This benchmark was automatically generated on **2026-05-27** from the latest CI run. **Environment:** Ubuntu Latest • .NET SDK 10.0.300 ::: @@ -18,12 +18,12 @@ Mock behavior configuration (returns, matchers): | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **TUnit.Mocks** | 418.1 ns | 3.75 ns | 3.32 ns | 2.31 KB | -| Imposter | 618.4 ns | 6.93 ns | 6.48 ns | 6.12 KB | -| Mockolate | 286.5 ns | 3.92 ns | 3.48 ns | 1.65 KB | -| Moq | 244,933.5 ns | 1,749.99 ns | 1,636.94 ns | 28.7 KB | -| NSubstitute | 4,016.2 ns | 28.05 ns | 26.23 ns | 9.06 KB | -| FakeItEasy | 5,476.4 ns | 42.30 ns | 39.57 ns | 10.6 KB | +| **TUnit.Mocks** | 499.0 ns | 4.50 ns | 3.99 ns | 2.31 KB | +| Imposter | 835.6 ns | 11.62 ns | 10.87 ns | 6.12 KB | +| Mockolate | 325.1 ns | 4.27 ns | 3.78 ns | 1.65 KB | +| Moq | 422,785.0 ns | 1,742.19 ns | 1,454.80 ns | 28.52 KB | +| NSubstitute | 5,450.0 ns | 94.05 ns | 96.58 ns | 9.06 KB | +| FakeItEasy | 7,651.3 ns | 55.78 ns | 52.18 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 --> 293921 - bar [418.1, 618.4, 286.5, 244933.5, 4016.2, 5476.4] + y-axis "Time (ns)" 0 --> 507342 + bar [499, 835.6, 325.1, 422785, 5450, 7651.3] ``` --- @@ -59,12 +59,12 @@ xychart-beta | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **TUnit.Mocks** | 601.8 ns | 8.24 ns | 7.71 ns | 3.09 KB | -| Imposter | 1,042.5 ns | 3.99 ns | 3.53 ns | 10.59 KB | -| Mockolate | 455.1 ns | 1.55 ns | 1.45 ns | 2.6 KB | -| Moq | 67,933.8 ns | 484.58 ns | 429.57 ns | 16.53 KB | -| NSubstitute | 8,199.0 ns | 68.48 ns | 64.06 ns | 20.31 KB | -| FakeItEasy | 5,125.3 ns | 36.29 ns | 30.30 ns | 11.71 KB | +| **TUnit.Mocks** | 716.9 ns | 5.44 ns | 4.82 ns | 3.09 KB | +| Imposter | 1,287.4 ns | 10.14 ns | 8.99 ns | 10.59 KB | +| Mockolate | 527.8 ns | 4.25 ns | 3.77 ns | 2.6 KB | +| Moq | 112,405.2 ns | 456.29 ns | 381.02 ns | 16.53 KB | +| NSubstitute | 11,637.2 ns | 101.02 ns | 94.50 ns | 20.31 KB | +| FakeItEasy | 7,942.5 ns | 46.50 ns | 43.50 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 --> 81521 - bar [601.8, 1042.5, 455.1, 67933.8, 8199, 5125.3] + y-axis "Time (ns)" 0 --> 134887 + bar [716.9, 1287.4, 527.8, 112405.2, 11637.2, 7942.5] ``` ## 🎯 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-26T03:27:58.119Z* +*Last generated: 2026-05-27T03:29:35.677Z* diff --git a/docs/docs/benchmarks/mocks/Verification.md b/docs/docs/benchmarks/mocks/Verification.md index 0906cc3971..6fa0ce61e2 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-26** from the latest CI run. +This benchmark was automatically generated on **2026-05-27** from the latest CI run. **Environment:** Ubuntu Latest • .NET SDK 10.0.300 ::: @@ -18,12 +18,12 @@ Verifying mock method calls: | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **TUnit.Mocks** | 731.54 ns | 4.708 ns | 4.404 ns | 2968 B | -| Imposter | 704.15 ns | 11.142 ns | 10.422 ns | 4688 B | -| Mockolate | 402.06 ns | 3.841 ns | 3.593 ns | 2240 B | -| Moq | 240,476.37 ns | 1,310.722 ns | 1,094.512 ns | 24324 B | -| NSubstitute | 5,855.83 ns | 71.533 ns | 63.412 ns | 10064 B | -| FakeItEasy | 6,368.42 ns | 42.748 ns | 35.697 ns | 10722 B | +| **TUnit.Mocks** | 747.61 ns | 2.649 ns | 2.348 ns | 2968 B | +| Imposter | 692.33 ns | 8.358 ns | 7.818 ns | 4688 B | +| Mockolate | 422.96 ns | 5.485 ns | 5.130 ns | 2240 B | +| Moq | 248,130.32 ns | 602.273 ns | 563.367 ns | 24324 B | +| NSubstitute | 5,863.08 ns | 34.903 ns | 32.649 ns | 10176 B | +| FakeItEasy | 6,495.93 ns | 51.650 ns | 45.786 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 --> 288572 - bar [731.54, 704.15, 402.06, 240476.37, 5855.83, 6368.42] + y-axis "Time (ns)" 0 --> 297757 + bar [747.61, 692.33, 422.96, 248130.32, 5863.08, 6495.93] ``` --- @@ -59,12 +59,12 @@ xychart-beta | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **TUnit.Mocks** | 51.52 ns | 0.170 ns | 0.142 ns | 304 B | -| Imposter | 320.22 ns | 3.168 ns | 2.963 ns | 2400 B | -| Mockolate | 254.20 ns | 3.236 ns | 3.027 ns | 1240 B | -| Moq | 62,788.56 ns | 373.250 ns | 311.681 ns | 7037 B | -| NSubstitute | 3,628.13 ns | 26.905 ns | 23.851 ns | 7088 B | -| FakeItEasy | 3,479.17 ns | 37.557 ns | 33.293 ns | 5210 B | +| **TUnit.Mocks** | 51.82 ns | 0.155 ns | 0.137 ns | 304 B | +| Imposter | 323.52 ns | 1.534 ns | 1.360 ns | 2400 B | +| Mockolate | 249.31 ns | 1.617 ns | 1.512 ns | 1240 B | +| Moq | 61,962.71 ns | 566.032 ns | 501.772 ns | 6925 B | +| NSubstitute | 3,445.53 ns | 24.295 ns | 22.725 ns | 7088 B | +| FakeItEasy | 3,465.76 ns | 66.860 ns | 82.111 ns | 5290 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 --> 75347 - bar [51.52, 320.22, 254.2, 62788.56, 3628.13, 3479.17] + y-axis "Time (ns)" 0 --> 74356 + bar [51.82, 323.52, 249.31, 61962.71, 3445.53, 3465.76] ``` --- @@ -100,12 +100,12 @@ xychart-beta | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **TUnit.Mocks** | 1,287.59 ns | 13.011 ns | 11.534 ns | 4384 B | -| Imposter | 1,783.01 ns | 35.245 ns | 82.383 ns | 11192 B | -| Mockolate | 1,216.74 ns | 23.968 ns | 24.614 ns | 5376 B | -| Moq | 354,879.81 ns | 3,387.848 ns | 3,168.995 ns | 34699 B | -| NSubstitute | 10,539.34 ns | 186.673 ns | 174.614 ns | 16762 B | -| FakeItEasy | 11,423.54 ns | 77.028 ns | 64.322 ns | 19232 B | +| **TUnit.Mocks** | 1,248.69 ns | 4.943 ns | 4.382 ns | 4384 B | +| Imposter | 1,675.38 ns | 10.927 ns | 10.221 ns | 11192 B | +| Mockolate | 1,111.26 ns | 19.421 ns | 21.587 ns | 5376 B | +| Moq | 352,523.72 ns | 4,464.400 ns | 4,176.002 ns | 34699 B | +| NSubstitute | 10,333.48 ns | 115.001 ns | 107.572 ns | 16762 B | +| FakeItEasy | 11,714.57 ns | 89.042 ns | 74.354 ns | 19344 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 --> 425856 - bar [1287.59, 1783.01, 1216.74, 354879.81, 10539.34, 11423.54] + y-axis "Time (ns)" 0 --> 423029 + bar [1248.69, 1675.38, 1111.26, 352523.72, 10333.48, 11714.57] ``` ## 🎯 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-26T03:27:58.119Z* +*Last generated: 2026-05-27T03:29:35.677Z* diff --git a/docs/docs/benchmarks/mocks/index.md b/docs/docs/benchmarks/mocks/index.md index cf58698e70..3325b48f5b 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-26** from the latest CI run. +These benchmarks were automatically generated on **2026-05-27** from the latest CI run. **Environment:** Ubuntu Latest • .NET SDK 10.0.300 ::: @@ -76,4 +76,4 @@ These benchmarks run automatically daily via [GitHub Actions](https://github.com Each benchmark runs multiple iterations with statistical analysis to ensure accuracy. Results may vary based on hardware and test characteristics. ::: -*Last generated: 2026-05-26T03:27:58.119Z* +*Last generated: 2026-05-27T03:29:35.677Z* diff --git a/docs/static/benchmarks/mocks/Callback.json b/docs/static/benchmarks/mocks/Callback.json index 3d642a3073..99a1175adb 100644 --- a/docs/static/benchmarks/mocks/Callback.json +++ b/docs/static/benchmarks/mocks/Callback.json @@ -1,5 +1,5 @@ { - "timestamp": "2026-05-26T03:27:58.119Z", + "timestamp": "2026-05-27T03:29:35.677Z", "category": "Callback", "description": "Callback registration and execution", "environment": { @@ -10,111 +10,111 @@ "results": [ { "Method": "TUnit.Mocks", - "Mean": "668.2 ns", - "Error": "2.21 ns", - "StdDev": "1.96 ns", + "Mean": "641.6 ns", + "Error": "3.57 ns", + "StdDev": "2.98 ns", "Gen0": "0.1879", "Gen1": "0.0019", "Allocated": "3.08 KB" }, { "Method": "Imposter", - "Mean": "487.8 ns", - "Error": "2.57 ns", - "StdDev": "2.28 ns", + "Mean": "473.3 ns", + "Error": "4.44 ns", + "StdDev": "4.16 ns", "Gen0": "0.1621", "Gen1": "0.0010", "Allocated": "2.66 KB" }, { "Method": "Mockolate", - "Mean": "346.0 ns", - "Error": "2.11 ns", - "StdDev": "1.87 ns", + "Mean": "345.9 ns", + "Error": "1.45 ns", + "StdDev": "1.36 ns", "Gen0": "0.1163", "Gen1": "0.0005", "Allocated": "1.91 KB" }, { "Method": "Moq", - "Mean": "135,973.7 ns", - "Error": "978.00 ns", - "StdDev": "866.97 ns", + "Mean": "134,443.3 ns", + "Error": "671.84 ns", + "StdDev": "561.02 ns", "Gen0": "0.4883", "Gen1": "-", "Allocated": "13.15 KB" }, { "Method": "NSubstitute", - "Mean": "4,044.3 ns", - "Error": "42.81 ns", - "StdDev": "35.75 ns", + "Mean": "4,139.0 ns", + "Error": "63.70 ns", + "StdDev": "59.59 ns", "Gen0": "0.4578", "Gen1": "-", "Allocated": "7.93 KB" }, { "Method": "FakeItEasy", - "Mean": "4,499.5 ns", - "Error": "39.30 ns", - "StdDev": "36.76 ns", - "Gen0": "0.4272", - "Gen1": "0.0305", + "Mean": "4,535.8 ns", + "Error": "27.28 ns", + "StdDev": "22.78 ns", + "Gen0": "0.4501", + "Gen1": "0.0153", "Allocated": "7.44 KB" }, { "Method": "'TUnit.Mocks (with args)'", - "Mean": "755.9 ns", - "Error": "6.16 ns", - "StdDev": "5.46 ns", + "Mean": "859.4 ns", + "Error": "6.15 ns", + "StdDev": "5.45 ns", "Gen0": "0.1936", "Gen1": "0.0019", "Allocated": "3.16 KB" }, { "Method": "'Imposter (with args)'", - "Mean": "544.2 ns", - "Error": "5.55 ns", - "StdDev": "4.92 ns", + "Mean": "533.2 ns", + "Error": "2.53 ns", + "StdDev": "2.11 ns", "Gen0": "0.1726", "Gen1": "0.0010", "Allocated": "2.82 KB" }, { "Method": "'Mockolate (with args)'", - "Mean": "386.9 ns", - "Error": "1.58 ns", - "StdDev": "1.23 ns", + "Mean": "387.6 ns", + "Error": "1.79 ns", + "StdDev": "1.59 ns", "Gen0": "0.1192", "Gen1": "0.0005", "Allocated": "1.95 KB" }, { "Method": "'Moq (with args)'", - "Mean": "142,414.3 ns", - "Error": "1,191.32 ns", - "StdDev": "1,114.36 ns", + "Mean": "146,925.2 ns", + "Error": "1,893.35 ns", + "StdDev": "1,771.04 ns", "Gen0": "0.4883", "Gen1": "-", "Allocated": "13.73 KB" }, { "Method": "'NSubstitute (with args)'", - "Mean": "4,686.3 ns", - "Error": "19.08 ns", - "StdDev": "17.85 ns", + "Mean": "4,704.6 ns", + "Error": "48.45 ns", + "StdDev": "45.32 ns", "Gen0": "0.5188", "Gen1": "0.0076", "Allocated": "8.53 KB" }, { "Method": "'FakeItEasy (with args)'", - "Mean": "5,427.7 ns", - "Error": "25.37 ns", - "StdDev": "21.18 ns", + "Mean": "5,463.5 ns", + "Error": "36.45 ns", + "StdDev": "32.32 ns", "Gen0": "0.5493", "Gen1": "0.0305", - "Allocated": "9.4 KB" + "Allocated": "9.26 KB" } ] } \ No newline at end of file diff --git a/docs/static/benchmarks/mocks/CombinedWorkflow.json b/docs/static/benchmarks/mocks/CombinedWorkflow.json index 2dc683bf08..dc04c24013 100644 --- a/docs/static/benchmarks/mocks/CombinedWorkflow.json +++ b/docs/static/benchmarks/mocks/CombinedWorkflow.json @@ -1,5 +1,5 @@ { - "timestamp": "2026-05-26T03:27:58.119Z", + "timestamp": "2026-05-27T03:29:35.677Z", "category": "CombinedWorkflow", "description": "Full workflow: create → setup → invoke → verify", "environment": { @@ -10,54 +10,54 @@ "results": [ { "Method": "TUnit.Mocks", - "Mean": "1.865 μs", - "Error": "0.0367 μs", - "StdDev": "0.0360 μs", + "Mean": "1.886 μs", + "Error": "0.0233 μs", + "StdDev": "0.0206 μs", "Gen0": "0.3738", "Gen1": "0.0057", "Allocated": "6.11 KB" }, { "Method": "Imposter", - "Mean": "2.639 μs", - "Error": "0.0528 μs", - "StdDev": "0.0925 μs", + "Mean": "2.568 μs", + "Error": "0.0511 μs", + "StdDev": "0.0589 μs", "Gen0": "0.9613", "Gen1": "0.0458", "Allocated": "15.71 KB" }, { "Method": "Mockolate", - "Mean": "1.714 μs", - "Error": "0.0338 μs", - "StdDev": "0.0601 μs", + "Mean": "1.834 μs", + "Error": "0.0244 μs", + "StdDev": "0.0204 μs", "Gen0": "0.4654", "Gen1": "0.0076", "Allocated": "7.63 KB" }, { "Method": "Moq", - "Mean": "316.243 μs", - "Error": "2.2704 μs", - "StdDev": "2.0126 μs", + "Mean": "315.512 μs", + "Error": "2.8785 μs", + "StdDev": "2.5517 μs", "Gen0": "1.9531", "Gen1": "0.9766", - "Allocated": "36.16 KB" + "Allocated": "36.35 KB" }, { "Method": "NSubstitute", - "Mean": "16.613 μs", - "Error": "0.1080 μs", - "StdDev": "0.1010 μs", + "Mean": "15.831 μs", + "Error": "0.0970 μs", + "StdDev": "0.0860 μs", "Gen0": "1.6174", "Gen1": "0.0305", "Allocated": "26.72 KB" }, { "Method": "FakeItEasy", - "Mean": "15.737 μs", - "Error": "0.2489 μs", - "StdDev": "0.2328 μs", + "Mean": "15.633 μs", + "Error": "0.2835 μs", + "StdDev": "0.2652 μs", "Gen0": "1.4648", "Gen1": "0.1221", "Allocated": "25.52 KB" diff --git a/docs/static/benchmarks/mocks/Invocation.json b/docs/static/benchmarks/mocks/Invocation.json index 46bbe72773..ee13dea2b1 100644 --- a/docs/static/benchmarks/mocks/Invocation.json +++ b/docs/static/benchmarks/mocks/Invocation.json @@ -1,5 +1,5 @@ { - "timestamp": "2026-05-26T03:27:58.119Z", + "timestamp": "2026-05-27T03:29:35.677Z", "category": "Invocation", "description": "Calling methods on mock objects", "environment": { @@ -10,162 +10,162 @@ "results": [ { "Method": "TUnit.Mocks", - "Mean": "266.37 ns", - "Error": "70.95 ns", - "StdDev": "3.889 ns", + "Mean": "270.4 ns", + "Error": "87.16 ns", + "StdDev": "4.78 ns", "Gen0": "0.0062", "Gen1": "0.0057", "Allocated": "120 B" }, { "Method": "Imposter", - "Mean": "299.92 ns", - "Error": "18.43 ns", - "StdDev": "1.010 ns", + "Mean": "312.3 ns", + "Error": "105.21 ns", + "StdDev": "5.77 ns", "Gen0": "0.0100", "Gen1": "0.0095", "Allocated": "168 B" }, { "Method": "Mockolate", - "Mean": "127.28 ns", - "Error": "14.44 ns", - "StdDev": "0.791 ns", + "Mean": "118.1 ns", + "Error": "92.05 ns", + "StdDev": "5.05 ns", "Gen0": "0.0050", "Gen1": "0.0048", "Allocated": "84 B" }, { "Method": "Moq", - "Mean": "819.40 ns", - "Error": "489.19 ns", - "StdDev": "26.814 ns", + "Mean": "868.5 ns", + "Error": "221.16 ns", + "StdDev": "12.12 ns", "Gen0": "0.0219", "Gen1": "0.0210", "Allocated": "376 B" }, { "Method": "NSubstitute", - "Mean": "745.44 ns", - "Error": "131.71 ns", - "StdDev": "7.220 ns", + "Mean": "774.5 ns", + "Error": "142.72 ns", + "StdDev": "7.82 ns", "Gen0": "0.0172", "Gen1": "0.0162", "Allocated": "304 B" }, { "Method": "FakeItEasy", - "Mean": "2,031.36 ns", - "Error": "454.12 ns", - "StdDev": "24.892 ns", + "Mean": "1,983.0 ns", + "Error": "338.98 ns", + "StdDev": "18.58 ns", "Gen0": "0.0534", "Gen1": "0.0496", "Allocated": "944 B" }, { "Method": "'TUnit.Mocks (String)'", - "Mean": "160.37 ns", - "Error": "71.06 ns", - "StdDev": "3.895 ns", + "Mean": "161.5 ns", + "Error": "80.59 ns", + "StdDev": "4.42 ns", "Gen0": "0.0048", "Gen1": "0.0045", "Allocated": "88 B" }, { "Method": "'Imposter (String)'", - "Mean": "299.72 ns", - "Error": "172.64 ns", - "StdDev": "9.463 ns", + "Mean": "312.3 ns", + "Error": "99.51 ns", + "StdDev": "5.45 ns", "Gen0": "0.0100", "Gen1": "0.0095", "Allocated": "168 B" }, { "Method": "'Mockolate (String)'", - "Mean": "95.72 ns", - "Error": "74.38 ns", - "StdDev": "4.077 ns", + "Mean": "124.4 ns", + "Error": "58.79 ns", + "StdDev": "3.22 ns", "Gen0": "0.0036", - "Gen1": "0.0035", + "Gen1": "0.0033", "Allocated": "60 B" }, { "Method": "'Moq (String)'", - "Mean": "514.31 ns", - "Error": "62.90 ns", - "StdDev": "3.448 ns", + "Mean": "630.9 ns", + "Error": "297.78 ns", + "StdDev": "16.32 ns", "Gen0": "0.0172", "Gen1": "0.0162", "Allocated": "296 B" }, { "Method": "'NSubstitute (String)'", - "Mean": "601.13 ns", - "Error": "262.05 ns", - "StdDev": "14.364 ns", - "Gen0": "0.0153", - "Gen1": "0.0143", - "Allocated": "272 B" + "Mean": "734.8 ns", + "Error": "103.10 ns", + "StdDev": "5.65 ns", + "Gen0": "0.0181", + "Gen1": "0.0172", + "Allocated": "328 B" }, { "Method": "'FakeItEasy (String)'", - "Mean": "1,485.52 ns", - "Error": "106.14 ns", - "StdDev": "5.818 ns", + "Mean": "1,806.2 ns", + "Error": "195.11 ns", + "StdDev": "10.69 ns", "Gen0": "0.0458", "Gen1": "0.0439", "Allocated": "776 B" }, { "Method": "'TUnit.Mocks (100 calls)'", - "Mean": "25,979.39 ns", - "Error": "9,532.60 ns", - "StdDev": "522.514 ns", + "Mean": "27,090.1 ns", + "Error": "10,775.05 ns", + "StdDev": "590.62 ns", "Gen0": "0.6104", "Gen1": "0.5798", "Allocated": "11936 B" }, { "Method": "'Imposter (100 calls)'", - "Mean": "29,063.61 ns", - "Error": "10,948.92 ns", - "StdDev": "600.147 ns", + "Mean": "30,628.9 ns", + "Error": "6,499.86 ns", + "StdDev": "356.28 ns", "Gen0": "0.9766", "Gen1": "0.9155", "Allocated": "16800 B" }, { "Method": "'Mockolate (100 calls)'", - "Mean": "9,783.73 ns", - "Error": "1,625.23 ns", - "StdDev": "89.084 ns", + "Mean": "13,117.9 ns", + "Error": "4,809.80 ns", + "StdDev": "263.64 ns", "Gen0": "0.4883", "Gen1": "0.4730", "Allocated": "8400 B" }, { "Method": "'Moq (100 calls)'", - "Mean": "78,221.85 ns", - "Error": "21,526.57 ns", - "StdDev": "1,179.944 ns", + "Mean": "88,139.7 ns", + "Error": "19,796.37 ns", + "StdDev": "1,085.11 ns", "Gen0": "2.1973", "Gen1": "2.0752", "Allocated": "37600 B" }, { "Method": "'NSubstitute (100 calls)'", - "Mean": "69,453.97 ns", - "Error": "13,579.64 ns", - "StdDev": "744.346 ns", + "Mean": "79,799.2 ns", + "Error": "27,093.46 ns", + "StdDev": "1,485.08 ns", "Gen0": "1.7090", "Gen1": "1.5869", "Allocated": "30848 B" }, { "Method": "'FakeItEasy (100 calls)'", - "Mean": "167,866.12 ns", - "Error": "44,812.34 ns", - "StdDev": "2,456.315 ns", + "Mean": "189,034.3 ns", + "Error": "100,257.58 ns", + "StdDev": "5,495.46 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 1c99626ef1..c34cdcbbb6 100644 --- a/docs/static/benchmarks/mocks/MockCreation.json +++ b/docs/static/benchmarks/mocks/MockCreation.json @@ -1,5 +1,5 @@ { - "timestamp": "2026-05-26T03:27:58.119Z", + "timestamp": "2026-05-27T03:29:35.677Z", "category": "MockCreation", "description": "Mock instance creation performance", "environment": { @@ -10,19 +10,19 @@ "results": [ { "Method": "TUnit.Mocks", - "Mean": "26.13 ns", - "Error": "0.204 ns", - "StdDev": "0.191 ns", - "Gen0": "0.0114", + "Mean": "26.42 ns", + "Error": "0.590 ns", + "StdDev": "0.724 ns", + "Gen0": "0.0115", "Gen1": "-", "Gen2": "-", "Allocated": "192 B" }, { "Method": "Imposter", - "Mean": "106.90 ns", - "Error": "2.106 ns", - "StdDev": "2.069 ns", + "Mean": "93.27 ns", + "Error": "1.856 ns", + "StdDev": "2.137 ns", "Gen0": "0.0262", "Gen1": "-", "Gen2": "-", @@ -30,9 +30,9 @@ }, { "Method": "Mockolate", - "Mean": "61.44 ns", - "Error": "0.312 ns", - "StdDev": "0.277 ns", + "Mean": "60.05 ns", + "Error": "1.265 ns", + "StdDev": "2.881 ns", "Gen0": "0.0253", "Gen1": "-", "Gen2": "-", @@ -40,9 +40,9 @@ }, { "Method": "Moq", - "Mean": "1,244.49 ns", - "Error": "14.417 ns", - "StdDev": "13.485 ns", + "Mean": "1,313.15 ns", + "Error": "17.484 ns", + "StdDev": "16.355 ns", "Gen0": "0.1221", "Gen1": "-", "Gen2": "-", @@ -50,9 +50,9 @@ }, { "Method": "NSubstitute", - "Mean": "1,674.31 ns", - "Error": "6.676 ns", - "StdDev": "5.575 ns", + "Mean": "1,850.64 ns", + "Error": "33.942 ns", + "StdDev": "31.750 ns", "Gen0": "0.2975", "Gen1": "0.0019", "Gen2": "-", @@ -60,9 +60,9 @@ }, { "Method": "FakeItEasy", - "Mean": "1,580.04 ns", - "Error": "5.243 ns", - "StdDev": "4.648 ns", + "Mean": "1,779.77 ns", + "Error": "34.314 ns", + "StdDev": "40.849 ns", "Gen0": "0.1602", "Gen1": "0.0038", "Gen2": "0.0019", @@ -70,19 +70,19 @@ }, { "Method": "'TUnit.Mocks (Repository)'", - "Mean": "26.30 ns", - "Error": "0.183 ns", - "StdDev": "0.163 ns", - "Gen0": "0.0115", + "Mean": "26.17 ns", + "Error": "0.589 ns", + "StdDev": "1.120 ns", + "Gen0": "0.0114", "Gen1": "-", "Gen2": "-", "Allocated": "192 B" }, { "Method": "'Imposter (Repository)'", - "Mean": "148.78 ns", - "Error": "0.500 ns", - "StdDev": "0.443 ns", + "Mean": "138.16 ns", + "Error": "2.846 ns", + "StdDev": "4.755 ns", "Gen0": "0.0415", "Gen1": "-", "Gen2": "-", @@ -90,9 +90,9 @@ }, { "Method": "'Mockolate (Repository)'", - "Mean": "63.25 ns", - "Error": "0.430 ns", - "StdDev": "0.381 ns", + "Mean": "68.07 ns", + "Error": "1.405 ns", + "StdDev": "2.060 ns", "Gen0": "0.0272", "Gen1": "-", "Gen2": "-", @@ -100,9 +100,9 @@ }, { "Method": "'Moq (Repository)'", - "Mean": "1,250.84 ns", - "Error": "19.706 ns", - "StdDev": "16.455 ns", + "Mean": "1,326.76 ns", + "Error": "10.767 ns", + "StdDev": "10.072 ns", "Gen0": "0.1125", "Gen1": "-", "Gen2": "-", @@ -110,19 +110,19 @@ }, { "Method": "'NSubstitute (Repository)'", - "Mean": "1,717.91 ns", - "Error": "4.914 ns", - "StdDev": "4.104 ns", + "Mean": "1,933.82 ns", + "Error": "34.247 ns", + "StdDev": "32.035 ns", "Gen0": "0.2975", - "Gen1": "0.0019", + "Gen1": "-", "Gen2": "-", "Allocated": "5000 B" }, { "Method": "'FakeItEasy (Repository)'", - "Mean": "1,622.80 ns", - "Error": "32.448 ns", - "StdDev": "31.869 ns", + "Mean": "1,800.68 ns", + "Error": "34.680 ns", + "StdDev": "37.108 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 a221113f28..5487cee0fc 100644 --- a/docs/static/benchmarks/mocks/Setup.json +++ b/docs/static/benchmarks/mocks/Setup.json @@ -1,5 +1,5 @@ { - "timestamp": "2026-05-26T03:27:58.119Z", + "timestamp": "2026-05-27T03:29:35.677Z", "category": "Setup", "description": "Mock behavior configuration (returns, matchers)", "environment": { @@ -10,110 +10,110 @@ "results": [ { "Method": "TUnit.Mocks", - "Mean": "418.1 ns", - "Error": "3.75 ns", - "StdDev": "3.32 ns", + "Mean": "499.0 ns", + "Error": "4.50 ns", + "StdDev": "3.99 ns", "Gen0": "0.1411", "Gen1": "0.0010", "Allocated": "2.31 KB" }, { "Method": "Imposter", - "Mean": "618.4 ns", - "Error": "6.93 ns", - "StdDev": "6.48 ns", + "Mean": "835.6 ns", + "Error": "11.62 ns", + "StdDev": "10.87 ns", "Gen0": "0.3738", "Gen1": "0.0076", "Allocated": "6.12 KB" }, { "Method": "Mockolate", - "Mean": "286.5 ns", - "Error": "3.92 ns", - "StdDev": "3.48 ns", + "Mean": "325.1 ns", + "Error": "4.27 ns", + "StdDev": "3.78 ns", "Gen0": "0.1006", "Gen1": "0.0005", "Allocated": "1.65 KB" }, { "Method": "Moq", - "Mean": "244,933.5 ns", - "Error": "1,749.99 ns", - "StdDev": "1,636.94 ns", - "Gen0": "1.4648", - "Gen1": "0.9766", - "Allocated": "28.7 KB" + "Mean": "422,785.0 ns", + "Error": "1,742.19 ns", + "StdDev": "1,454.80 ns", + "Gen0": "0.9766", + "Gen1": "-", + "Allocated": "28.52 KB" }, { "Method": "NSubstitute", - "Mean": "4,016.2 ns", - "Error": "28.05 ns", - "StdDev": "26.23 ns", + "Mean": "5,450.0 ns", + "Error": "94.05 ns", + "StdDev": "96.58 ns", "Gen0": "0.5493", - "Gen1": "0.0076", + "Gen1": "-", "Allocated": "9.06 KB" }, { "Method": "FakeItEasy", - "Mean": "5,476.4 ns", - "Error": "42.30 ns", - "StdDev": "39.57 ns", - "Gen0": "0.6409", + "Mean": "7,651.3 ns", + "Error": "55.78 ns", + "StdDev": "52.18 ns", + "Gen0": "0.6256", "Gen1": "0.0153", - "Allocated": "10.6 KB" + "Allocated": "10.45 KB" }, { "Method": "'TUnit.Mocks (Multiple)'", - "Mean": "601.8 ns", - "Error": "8.24 ns", - "StdDev": "7.71 ns", + "Mean": "716.9 ns", + "Error": "5.44 ns", + "StdDev": "4.82 ns", "Gen0": "0.1888", "Gen1": "0.0019", "Allocated": "3.09 KB" }, { "Method": "'Imposter (Multiple)'", - "Mean": "1,042.5 ns", - "Error": "3.99 ns", - "StdDev": "3.53 ns", + "Mean": "1,287.4 ns", + "Error": "10.14 ns", + "StdDev": "8.99 ns", "Gen0": "0.6485", "Gen1": "0.0248", "Allocated": "10.59 KB" }, { "Method": "'Mockolate (Multiple)'", - "Mean": "455.1 ns", - "Error": "1.55 ns", - "StdDev": "1.45 ns", - "Gen0": "0.1588", + "Mean": "527.8 ns", + "Error": "4.25 ns", + "StdDev": "3.77 ns", + "Gen0": "0.1583", "Gen1": "0.0010", "Allocated": "2.6 KB" }, { "Method": "'Moq (Multiple)'", - "Mean": "67,933.8 ns", - "Error": "484.58 ns", - "StdDev": "429.57 ns", + "Mean": "112,405.2 ns", + "Error": "456.29 ns", + "StdDev": "381.02 ns", "Gen0": "0.9766", "Gen1": "0.7324", "Allocated": "16.53 KB" }, { "Method": "'NSubstitute (Multiple)'", - "Mean": "8,199.0 ns", - "Error": "68.48 ns", - "StdDev": "64.06 ns", - "Gen0": "1.2207", - "Gen1": "-", + "Mean": "11,637.2 ns", + "Error": "101.02 ns", + "StdDev": "94.50 ns", + "Gen0": "1.2360", + "Gen1": "0.0305", "Allocated": "20.31 KB" }, { "Method": "'FakeItEasy (Multiple)'", - "Mean": "5,125.3 ns", - "Error": "36.29 ns", - "StdDev": "30.30 ns", + "Mean": "7,942.5 ns", + "Error": "46.50 ns", + "StdDev": "43.50 ns", "Gen0": "0.7019", - "Gen1": "0.0305", + "Gen1": "0.0153", "Allocated": "11.71 KB" } ] diff --git a/docs/static/benchmarks/mocks/Verification.json b/docs/static/benchmarks/mocks/Verification.json index 10cf18b89b..1439c8cf00 100644 --- a/docs/static/benchmarks/mocks/Verification.json +++ b/docs/static/benchmarks/mocks/Verification.json @@ -1,5 +1,5 @@ { - "timestamp": "2026-05-26T03:27:58.119Z", + "timestamp": "2026-05-27T03:29:35.677Z", "category": "Verification", "description": "Verifying mock method calls", "environment": { @@ -10,165 +10,165 @@ "results": [ { "Method": "TUnit.Mocks", - "Mean": "731.54 ns", - "Error": "4.708 ns", - "StdDev": "4.404 ns", + "Mean": "747.61 ns", + "Error": "2.649 ns", + "StdDev": "2.348 ns", "Gen0": "0.1774", "Gen1": "0.0010", "Allocated": "2968 B" }, { "Method": "Imposter", - "Mean": "704.15 ns", - "Error": "11.142 ns", - "StdDev": "10.422 ns", + "Mean": "692.33 ns", + "Error": "8.358 ns", + "StdDev": "7.818 ns", "Gen0": "0.2794", "Gen1": "0.0038", "Allocated": "4688 B" }, { "Method": "Mockolate", - "Mean": "402.06 ns", - "Error": "3.841 ns", - "StdDev": "3.593 ns", + "Mean": "422.96 ns", + "Error": "5.485 ns", + "StdDev": "5.130 ns", "Gen0": "0.1335", "Gen1": "0.0005", "Allocated": "2240 B" }, { "Method": "Moq", - "Mean": "240,476.37 ns", - "Error": "1,310.722 ns", - "StdDev": "1,094.512 ns", + "Mean": "248,130.32 ns", + "Error": "602.273 ns", + "StdDev": "563.367 ns", "Gen0": "0.9766", "Gen1": "0.4883", "Allocated": "24324 B" }, { "Method": "NSubstitute", - "Mean": "5,855.83 ns", - "Error": "71.533 ns", - "StdDev": "63.412 ns", - "Gen0": "0.5951", + "Mean": "5,863.08 ns", + "Error": "34.903 ns", + "StdDev": "32.649 ns", + "Gen0": "0.6027", "Gen1": "0.0076", - "Allocated": "10064 B" + "Allocated": "10176 B" }, { "Method": "FakeItEasy", - "Mean": "6,368.42 ns", - "Error": "42.748 ns", - "StdDev": "35.697 ns", + "Mean": "6,495.93 ns", + "Error": "51.650 ns", + "StdDev": "45.786 ns", "Gen0": "0.6409", "Gen1": "0.0153", "Allocated": "10722 B" }, { "Method": "'TUnit.Mocks (Never)'", - "Mean": "51.52 ns", - "Error": "0.170 ns", - "StdDev": "0.142 ns", + "Mean": "51.82 ns", + "Error": "0.155 ns", + "StdDev": "0.137 ns", "Gen0": "0.0181", "Gen1": "-", "Allocated": "304 B" }, { "Method": "'Imposter (Never)'", - "Mean": "320.22 ns", - "Error": "3.168 ns", - "StdDev": "2.963 ns", + "Mean": "323.52 ns", + "Error": "1.534 ns", + "StdDev": "1.360 ns", "Gen0": "0.1431", "Gen1": "0.0010", "Allocated": "2400 B" }, { "Method": "'Mockolate (Never)'", - "Mean": "254.20 ns", - "Error": "3.236 ns", - "StdDev": "3.027 ns", + "Mean": "249.31 ns", + "Error": "1.617 ns", + "StdDev": "1.512 ns", "Gen0": "0.0739", "Gen1": "-", "Allocated": "1240 B" }, { "Method": "'Moq (Never)'", - "Mean": "62,788.56 ns", - "Error": "373.250 ns", - "StdDev": "311.681 ns", + "Mean": "61,962.71 ns", + "Error": "566.032 ns", + "StdDev": "501.772 ns", "Gen0": "0.3662", "Gen1": "0.2441", - "Allocated": "7037 B" + "Allocated": "6925 B" }, { "Method": "'NSubstitute (Never)'", - "Mean": "3,628.13 ns", - "Error": "26.905 ns", - "StdDev": "23.851 ns", + "Mean": "3,445.53 ns", + "Error": "24.295 ns", + "StdDev": "22.725 ns", "Gen0": "0.4234", "Gen1": "0.0038", "Allocated": "7088 B" }, { "Method": "'FakeItEasy (Never)'", - "Mean": "3,479.17 ns", - "Error": "37.557 ns", - "StdDev": "33.293 ns", + "Mean": "3,465.76 ns", + "Error": "66.860 ns", + "StdDev": "82.111 ns", "Gen0": "0.3052", "Gen1": "0.0153", - "Allocated": "5210 B" + "Allocated": "5290 B" }, { "Method": "'TUnit.Mocks (Multiple)'", - "Mean": "1,287.59 ns", - "Error": "13.011 ns", - "StdDev": "11.534 ns", + "Mean": "1,248.69 ns", + "Error": "4.943 ns", + "StdDev": "4.382 ns", "Gen0": "0.2613", "Gen1": "0.0019", "Allocated": "4384 B" }, { "Method": "'Imposter (Multiple)'", - "Mean": "1,783.01 ns", - "Error": "35.245 ns", - "StdDev": "82.383 ns", + "Mean": "1,675.38 ns", + "Error": "10.927 ns", + "StdDev": "10.221 ns", "Gen0": "0.6676", - "Gen1": "0.0191", + "Gen1": "0.0210", "Allocated": "11192 B" }, { "Method": "'Mockolate (Multiple)'", - "Mean": "1,216.74 ns", - "Error": "23.968 ns", - "StdDev": "24.614 ns", + "Mean": "1,111.26 ns", + "Error": "19.421 ns", + "StdDev": "21.587 ns", "Gen0": "0.3204", "Gen1": "0.0038", "Allocated": "5376 B" }, { "Method": "'Moq (Multiple)'", - "Mean": "354,879.81 ns", - "Error": "3,387.848 ns", - "StdDev": "3,168.995 ns", + "Mean": "352,523.72 ns", + "Error": "4,464.400 ns", + "StdDev": "4,176.002 ns", "Gen0": "1.9531", "Gen1": "0.9766", "Allocated": "34699 B" }, { "Method": "'NSubstitute (Multiple)'", - "Mean": "10,539.34 ns", - "Error": "186.673 ns", - "StdDev": "174.614 ns", + "Mean": "10,333.48 ns", + "Error": "115.001 ns", + "StdDev": "107.572 ns", "Gen0": "0.9918", "Gen1": "0.0153", "Allocated": "16762 B" }, { "Method": "'FakeItEasy (Multiple)'", - "Mean": "11,423.54 ns", - "Error": "77.028 ns", - "StdDev": "64.322 ns", + "Mean": "11,714.57 ns", + "Error": "89.042 ns", + "StdDev": "74.354 ns", "Gen0": "1.0986", "Gen1": "0.0610", - "Allocated": "19232 B" + "Allocated": "19344 B" } ] } \ No newline at end of file diff --git a/docs/static/benchmarks/mocks/latest.json b/docs/static/benchmarks/mocks/latest.json index 4ddb9c2cdc..5f125d88f5 100644 --- a/docs/static/benchmarks/mocks/latest.json +++ b/docs/static/benchmarks/mocks/latest.json @@ -1,5 +1,5 @@ { - "timestamp": "2026-05-26T03:27:58.119Z", + "timestamp": "2026-05-27T03:29:35.677Z", "environment": { "benchmarkDotNetVersion": "BenchmarkDotNet v0.15.8, Linux Ubuntu 24.04.4 LTS (Noble Numbat)", "sdk": ".NET SDK 10.0.300", @@ -9,164 +9,164 @@ "Callback": [ { "Method": "TUnit.Mocks", - "Mean": "668.2 ns", - "Error": "2.21 ns", - "StdDev": "1.96 ns", + "Mean": "641.6 ns", + "Error": "3.57 ns", + "StdDev": "2.98 ns", "Gen0": "0.1879", "Gen1": "0.0019", "Allocated": "3.08 KB" }, { "Method": "Imposter", - "Mean": "487.8 ns", - "Error": "2.57 ns", - "StdDev": "2.28 ns", + "Mean": "473.3 ns", + "Error": "4.44 ns", + "StdDev": "4.16 ns", "Gen0": "0.1621", "Gen1": "0.0010", "Allocated": "2.66 KB" }, { "Method": "Mockolate", - "Mean": "346.0 ns", - "Error": "2.11 ns", - "StdDev": "1.87 ns", + "Mean": "345.9 ns", + "Error": "1.45 ns", + "StdDev": "1.36 ns", "Gen0": "0.1163", "Gen1": "0.0005", "Allocated": "1.91 KB" }, { "Method": "Moq", - "Mean": "135,973.7 ns", - "Error": "978.00 ns", - "StdDev": "866.97 ns", + "Mean": "134,443.3 ns", + "Error": "671.84 ns", + "StdDev": "561.02 ns", "Gen0": "0.4883", "Gen1": "-", "Allocated": "13.15 KB" }, { "Method": "NSubstitute", - "Mean": "4,044.3 ns", - "Error": "42.81 ns", - "StdDev": "35.75 ns", + "Mean": "4,139.0 ns", + "Error": "63.70 ns", + "StdDev": "59.59 ns", "Gen0": "0.4578", "Gen1": "-", "Allocated": "7.93 KB" }, { "Method": "FakeItEasy", - "Mean": "4,499.5 ns", - "Error": "39.30 ns", - "StdDev": "36.76 ns", - "Gen0": "0.4272", - "Gen1": "0.0305", + "Mean": "4,535.8 ns", + "Error": "27.28 ns", + "StdDev": "22.78 ns", + "Gen0": "0.4501", + "Gen1": "0.0153", "Allocated": "7.44 KB" }, { "Method": "'TUnit.Mocks (with args)'", - "Mean": "755.9 ns", - "Error": "6.16 ns", - "StdDev": "5.46 ns", + "Mean": "859.4 ns", + "Error": "6.15 ns", + "StdDev": "5.45 ns", "Gen0": "0.1936", "Gen1": "0.0019", "Allocated": "3.16 KB" }, { "Method": "'Imposter (with args)'", - "Mean": "544.2 ns", - "Error": "5.55 ns", - "StdDev": "4.92 ns", + "Mean": "533.2 ns", + "Error": "2.53 ns", + "StdDev": "2.11 ns", "Gen0": "0.1726", "Gen1": "0.0010", "Allocated": "2.82 KB" }, { "Method": "'Mockolate (with args)'", - "Mean": "386.9 ns", - "Error": "1.58 ns", - "StdDev": "1.23 ns", + "Mean": "387.6 ns", + "Error": "1.79 ns", + "StdDev": "1.59 ns", "Gen0": "0.1192", "Gen1": "0.0005", "Allocated": "1.95 KB" }, { "Method": "'Moq (with args)'", - "Mean": "142,414.3 ns", - "Error": "1,191.32 ns", - "StdDev": "1,114.36 ns", + "Mean": "146,925.2 ns", + "Error": "1,893.35 ns", + "StdDev": "1,771.04 ns", "Gen0": "0.4883", "Gen1": "-", "Allocated": "13.73 KB" }, { "Method": "'NSubstitute (with args)'", - "Mean": "4,686.3 ns", - "Error": "19.08 ns", - "StdDev": "17.85 ns", + "Mean": "4,704.6 ns", + "Error": "48.45 ns", + "StdDev": "45.32 ns", "Gen0": "0.5188", "Gen1": "0.0076", "Allocated": "8.53 KB" }, { "Method": "'FakeItEasy (with args)'", - "Mean": "5,427.7 ns", - "Error": "25.37 ns", - "StdDev": "21.18 ns", + "Mean": "5,463.5 ns", + "Error": "36.45 ns", + "StdDev": "32.32 ns", "Gen0": "0.5493", "Gen1": "0.0305", - "Allocated": "9.4 KB" + "Allocated": "9.26 KB" } ], "CombinedWorkflow": [ { "Method": "TUnit.Mocks", - "Mean": "1.865 μs", - "Error": "0.0367 μs", - "StdDev": "0.0360 μs", + "Mean": "1.886 μs", + "Error": "0.0233 μs", + "StdDev": "0.0206 μs", "Gen0": "0.3738", "Gen1": "0.0057", "Allocated": "6.11 KB" }, { "Method": "Imposter", - "Mean": "2.639 μs", - "Error": "0.0528 μs", - "StdDev": "0.0925 μs", + "Mean": "2.568 μs", + "Error": "0.0511 μs", + "StdDev": "0.0589 μs", "Gen0": "0.9613", "Gen1": "0.0458", "Allocated": "15.71 KB" }, { "Method": "Mockolate", - "Mean": "1.714 μs", - "Error": "0.0338 μs", - "StdDev": "0.0601 μs", + "Mean": "1.834 μs", + "Error": "0.0244 μs", + "StdDev": "0.0204 μs", "Gen0": "0.4654", "Gen1": "0.0076", "Allocated": "7.63 KB" }, { "Method": "Moq", - "Mean": "316.243 μs", - "Error": "2.2704 μs", - "StdDev": "2.0126 μs", + "Mean": "315.512 μs", + "Error": "2.8785 μs", + "StdDev": "2.5517 μs", "Gen0": "1.9531", "Gen1": "0.9766", - "Allocated": "36.16 KB" + "Allocated": "36.35 KB" }, { "Method": "NSubstitute", - "Mean": "16.613 μs", - "Error": "0.1080 μs", - "StdDev": "0.1010 μs", + "Mean": "15.831 μs", + "Error": "0.0970 μs", + "StdDev": "0.0860 μs", "Gen0": "1.6174", "Gen1": "0.0305", "Allocated": "26.72 KB" }, { "Method": "FakeItEasy", - "Mean": "15.737 μs", - "Error": "0.2489 μs", - "StdDev": "0.2328 μs", + "Mean": "15.633 μs", + "Error": "0.2835 μs", + "StdDev": "0.2652 μs", "Gen0": "1.4648", "Gen1": "0.1221", "Allocated": "25.52 KB" @@ -175,162 +175,162 @@ "Invocation": [ { "Method": "TUnit.Mocks", - "Mean": "266.37 ns", - "Error": "70.95 ns", - "StdDev": "3.889 ns", + "Mean": "270.4 ns", + "Error": "87.16 ns", + "StdDev": "4.78 ns", "Gen0": "0.0062", "Gen1": "0.0057", "Allocated": "120 B" }, { "Method": "Imposter", - "Mean": "299.92 ns", - "Error": "18.43 ns", - "StdDev": "1.010 ns", + "Mean": "312.3 ns", + "Error": "105.21 ns", + "StdDev": "5.77 ns", "Gen0": "0.0100", "Gen1": "0.0095", "Allocated": "168 B" }, { "Method": "Mockolate", - "Mean": "127.28 ns", - "Error": "14.44 ns", - "StdDev": "0.791 ns", + "Mean": "118.1 ns", + "Error": "92.05 ns", + "StdDev": "5.05 ns", "Gen0": "0.0050", "Gen1": "0.0048", "Allocated": "84 B" }, { "Method": "Moq", - "Mean": "819.40 ns", - "Error": "489.19 ns", - "StdDev": "26.814 ns", + "Mean": "868.5 ns", + "Error": "221.16 ns", + "StdDev": "12.12 ns", "Gen0": "0.0219", "Gen1": "0.0210", "Allocated": "376 B" }, { "Method": "NSubstitute", - "Mean": "745.44 ns", - "Error": "131.71 ns", - "StdDev": "7.220 ns", + "Mean": "774.5 ns", + "Error": "142.72 ns", + "StdDev": "7.82 ns", "Gen0": "0.0172", "Gen1": "0.0162", "Allocated": "304 B" }, { "Method": "FakeItEasy", - "Mean": "2,031.36 ns", - "Error": "454.12 ns", - "StdDev": "24.892 ns", + "Mean": "1,983.0 ns", + "Error": "338.98 ns", + "StdDev": "18.58 ns", "Gen0": "0.0534", "Gen1": "0.0496", "Allocated": "944 B" }, { "Method": "'TUnit.Mocks (String)'", - "Mean": "160.37 ns", - "Error": "71.06 ns", - "StdDev": "3.895 ns", + "Mean": "161.5 ns", + "Error": "80.59 ns", + "StdDev": "4.42 ns", "Gen0": "0.0048", "Gen1": "0.0045", "Allocated": "88 B" }, { "Method": "'Imposter (String)'", - "Mean": "299.72 ns", - "Error": "172.64 ns", - "StdDev": "9.463 ns", + "Mean": "312.3 ns", + "Error": "99.51 ns", + "StdDev": "5.45 ns", "Gen0": "0.0100", "Gen1": "0.0095", "Allocated": "168 B" }, { "Method": "'Mockolate (String)'", - "Mean": "95.72 ns", - "Error": "74.38 ns", - "StdDev": "4.077 ns", + "Mean": "124.4 ns", + "Error": "58.79 ns", + "StdDev": "3.22 ns", "Gen0": "0.0036", - "Gen1": "0.0035", + "Gen1": "0.0033", "Allocated": "60 B" }, { "Method": "'Moq (String)'", - "Mean": "514.31 ns", - "Error": "62.90 ns", - "StdDev": "3.448 ns", + "Mean": "630.9 ns", + "Error": "297.78 ns", + "StdDev": "16.32 ns", "Gen0": "0.0172", "Gen1": "0.0162", "Allocated": "296 B" }, { "Method": "'NSubstitute (String)'", - "Mean": "601.13 ns", - "Error": "262.05 ns", - "StdDev": "14.364 ns", - "Gen0": "0.0153", - "Gen1": "0.0143", - "Allocated": "272 B" + "Mean": "734.8 ns", + "Error": "103.10 ns", + "StdDev": "5.65 ns", + "Gen0": "0.0181", + "Gen1": "0.0172", + "Allocated": "328 B" }, { "Method": "'FakeItEasy (String)'", - "Mean": "1,485.52 ns", - "Error": "106.14 ns", - "StdDev": "5.818 ns", + "Mean": "1,806.2 ns", + "Error": "195.11 ns", + "StdDev": "10.69 ns", "Gen0": "0.0458", "Gen1": "0.0439", "Allocated": "776 B" }, { "Method": "'TUnit.Mocks (100 calls)'", - "Mean": "25,979.39 ns", - "Error": "9,532.60 ns", - "StdDev": "522.514 ns", + "Mean": "27,090.1 ns", + "Error": "10,775.05 ns", + "StdDev": "590.62 ns", "Gen0": "0.6104", "Gen1": "0.5798", "Allocated": "11936 B" }, { "Method": "'Imposter (100 calls)'", - "Mean": "29,063.61 ns", - "Error": "10,948.92 ns", - "StdDev": "600.147 ns", + "Mean": "30,628.9 ns", + "Error": "6,499.86 ns", + "StdDev": "356.28 ns", "Gen0": "0.9766", "Gen1": "0.9155", "Allocated": "16800 B" }, { "Method": "'Mockolate (100 calls)'", - "Mean": "9,783.73 ns", - "Error": "1,625.23 ns", - "StdDev": "89.084 ns", + "Mean": "13,117.9 ns", + "Error": "4,809.80 ns", + "StdDev": "263.64 ns", "Gen0": "0.4883", "Gen1": "0.4730", "Allocated": "8400 B" }, { "Method": "'Moq (100 calls)'", - "Mean": "78,221.85 ns", - "Error": "21,526.57 ns", - "StdDev": "1,179.944 ns", + "Mean": "88,139.7 ns", + "Error": "19,796.37 ns", + "StdDev": "1,085.11 ns", "Gen0": "2.1973", "Gen1": "2.0752", "Allocated": "37600 B" }, { "Method": "'NSubstitute (100 calls)'", - "Mean": "69,453.97 ns", - "Error": "13,579.64 ns", - "StdDev": "744.346 ns", + "Mean": "79,799.2 ns", + "Error": "27,093.46 ns", + "StdDev": "1,485.08 ns", "Gen0": "1.7090", "Gen1": "1.5869", "Allocated": "30848 B" }, { "Method": "'FakeItEasy (100 calls)'", - "Mean": "167,866.12 ns", - "Error": "44,812.34 ns", - "StdDev": "2,456.315 ns", + "Mean": "189,034.3 ns", + "Error": "100,257.58 ns", + "StdDev": "5,495.46 ns", "Gen0": "5.6152", "Gen1": "5.3711", "Allocated": "94400 B" @@ -339,19 +339,19 @@ "MockCreation": [ { "Method": "TUnit.Mocks", - "Mean": "26.13 ns", - "Error": "0.204 ns", - "StdDev": "0.191 ns", - "Gen0": "0.0114", + "Mean": "26.42 ns", + "Error": "0.590 ns", + "StdDev": "0.724 ns", + "Gen0": "0.0115", "Gen1": "-", "Gen2": "-", "Allocated": "192 B" }, { "Method": "Imposter", - "Mean": "106.90 ns", - "Error": "2.106 ns", - "StdDev": "2.069 ns", + "Mean": "93.27 ns", + "Error": "1.856 ns", + "StdDev": "2.137 ns", "Gen0": "0.0262", "Gen1": "-", "Gen2": "-", @@ -359,9 +359,9 @@ }, { "Method": "Mockolate", - "Mean": "61.44 ns", - "Error": "0.312 ns", - "StdDev": "0.277 ns", + "Mean": "60.05 ns", + "Error": "1.265 ns", + "StdDev": "2.881 ns", "Gen0": "0.0253", "Gen1": "-", "Gen2": "-", @@ -369,9 +369,9 @@ }, { "Method": "Moq", - "Mean": "1,244.49 ns", - "Error": "14.417 ns", - "StdDev": "13.485 ns", + "Mean": "1,313.15 ns", + "Error": "17.484 ns", + "StdDev": "16.355 ns", "Gen0": "0.1221", "Gen1": "-", "Gen2": "-", @@ -379,9 +379,9 @@ }, { "Method": "NSubstitute", - "Mean": "1,674.31 ns", - "Error": "6.676 ns", - "StdDev": "5.575 ns", + "Mean": "1,850.64 ns", + "Error": "33.942 ns", + "StdDev": "31.750 ns", "Gen0": "0.2975", "Gen1": "0.0019", "Gen2": "-", @@ -389,9 +389,9 @@ }, { "Method": "FakeItEasy", - "Mean": "1,580.04 ns", - "Error": "5.243 ns", - "StdDev": "4.648 ns", + "Mean": "1,779.77 ns", + "Error": "34.314 ns", + "StdDev": "40.849 ns", "Gen0": "0.1602", "Gen1": "0.0038", "Gen2": "0.0019", @@ -399,19 +399,19 @@ }, { "Method": "'TUnit.Mocks (Repository)'", - "Mean": "26.30 ns", - "Error": "0.183 ns", - "StdDev": "0.163 ns", - "Gen0": "0.0115", + "Mean": "26.17 ns", + "Error": "0.589 ns", + "StdDev": "1.120 ns", + "Gen0": "0.0114", "Gen1": "-", "Gen2": "-", "Allocated": "192 B" }, { "Method": "'Imposter (Repository)'", - "Mean": "148.78 ns", - "Error": "0.500 ns", - "StdDev": "0.443 ns", + "Mean": "138.16 ns", + "Error": "2.846 ns", + "StdDev": "4.755 ns", "Gen0": "0.0415", "Gen1": "-", "Gen2": "-", @@ -419,9 +419,9 @@ }, { "Method": "'Mockolate (Repository)'", - "Mean": "63.25 ns", - "Error": "0.430 ns", - "StdDev": "0.381 ns", + "Mean": "68.07 ns", + "Error": "1.405 ns", + "StdDev": "2.060 ns", "Gen0": "0.0272", "Gen1": "-", "Gen2": "-", @@ -429,9 +429,9 @@ }, { "Method": "'Moq (Repository)'", - "Mean": "1,250.84 ns", - "Error": "19.706 ns", - "StdDev": "16.455 ns", + "Mean": "1,326.76 ns", + "Error": "10.767 ns", + "StdDev": "10.072 ns", "Gen0": "0.1125", "Gen1": "-", "Gen2": "-", @@ -439,19 +439,19 @@ }, { "Method": "'NSubstitute (Repository)'", - "Mean": "1,717.91 ns", - "Error": "4.914 ns", - "StdDev": "4.104 ns", + "Mean": "1,933.82 ns", + "Error": "34.247 ns", + "StdDev": "32.035 ns", "Gen0": "0.2975", - "Gen1": "0.0019", + "Gen1": "-", "Gen2": "-", "Allocated": "5000 B" }, { "Method": "'FakeItEasy (Repository)'", - "Mean": "1,622.80 ns", - "Error": "32.448 ns", - "StdDev": "31.869 ns", + "Mean": "1,800.68 ns", + "Error": "34.680 ns", + "StdDev": "37.108 ns", "Gen0": "0.1602", "Gen1": "0.0038", "Gen2": "0.0019", @@ -461,281 +461,281 @@ "Setup": [ { "Method": "TUnit.Mocks", - "Mean": "418.1 ns", - "Error": "3.75 ns", - "StdDev": "3.32 ns", + "Mean": "499.0 ns", + "Error": "4.50 ns", + "StdDev": "3.99 ns", "Gen0": "0.1411", "Gen1": "0.0010", "Allocated": "2.31 KB" }, { "Method": "Imposter", - "Mean": "618.4 ns", - "Error": "6.93 ns", - "StdDev": "6.48 ns", + "Mean": "835.6 ns", + "Error": "11.62 ns", + "StdDev": "10.87 ns", "Gen0": "0.3738", "Gen1": "0.0076", "Allocated": "6.12 KB" }, { "Method": "Mockolate", - "Mean": "286.5 ns", - "Error": "3.92 ns", - "StdDev": "3.48 ns", + "Mean": "325.1 ns", + "Error": "4.27 ns", + "StdDev": "3.78 ns", "Gen0": "0.1006", "Gen1": "0.0005", "Allocated": "1.65 KB" }, { "Method": "Moq", - "Mean": "244,933.5 ns", - "Error": "1,749.99 ns", - "StdDev": "1,636.94 ns", - "Gen0": "1.4648", - "Gen1": "0.9766", - "Allocated": "28.7 KB" + "Mean": "422,785.0 ns", + "Error": "1,742.19 ns", + "StdDev": "1,454.80 ns", + "Gen0": "0.9766", + "Gen1": "-", + "Allocated": "28.52 KB" }, { "Method": "NSubstitute", - "Mean": "4,016.2 ns", - "Error": "28.05 ns", - "StdDev": "26.23 ns", + "Mean": "5,450.0 ns", + "Error": "94.05 ns", + "StdDev": "96.58 ns", "Gen0": "0.5493", - "Gen1": "0.0076", + "Gen1": "-", "Allocated": "9.06 KB" }, { "Method": "FakeItEasy", - "Mean": "5,476.4 ns", - "Error": "42.30 ns", - "StdDev": "39.57 ns", - "Gen0": "0.6409", + "Mean": "7,651.3 ns", + "Error": "55.78 ns", + "StdDev": "52.18 ns", + "Gen0": "0.6256", "Gen1": "0.0153", - "Allocated": "10.6 KB" + "Allocated": "10.45 KB" }, { "Method": "'TUnit.Mocks (Multiple)'", - "Mean": "601.8 ns", - "Error": "8.24 ns", - "StdDev": "7.71 ns", + "Mean": "716.9 ns", + "Error": "5.44 ns", + "StdDev": "4.82 ns", "Gen0": "0.1888", "Gen1": "0.0019", "Allocated": "3.09 KB" }, { "Method": "'Imposter (Multiple)'", - "Mean": "1,042.5 ns", - "Error": "3.99 ns", - "StdDev": "3.53 ns", + "Mean": "1,287.4 ns", + "Error": "10.14 ns", + "StdDev": "8.99 ns", "Gen0": "0.6485", "Gen1": "0.0248", "Allocated": "10.59 KB" }, { "Method": "'Mockolate (Multiple)'", - "Mean": "455.1 ns", - "Error": "1.55 ns", - "StdDev": "1.45 ns", - "Gen0": "0.1588", + "Mean": "527.8 ns", + "Error": "4.25 ns", + "StdDev": "3.77 ns", + "Gen0": "0.1583", "Gen1": "0.0010", "Allocated": "2.6 KB" }, { "Method": "'Moq (Multiple)'", - "Mean": "67,933.8 ns", - "Error": "484.58 ns", - "StdDev": "429.57 ns", + "Mean": "112,405.2 ns", + "Error": "456.29 ns", + "StdDev": "381.02 ns", "Gen0": "0.9766", "Gen1": "0.7324", "Allocated": "16.53 KB" }, { "Method": "'NSubstitute (Multiple)'", - "Mean": "8,199.0 ns", - "Error": "68.48 ns", - "StdDev": "64.06 ns", - "Gen0": "1.2207", - "Gen1": "-", + "Mean": "11,637.2 ns", + "Error": "101.02 ns", + "StdDev": "94.50 ns", + "Gen0": "1.2360", + "Gen1": "0.0305", "Allocated": "20.31 KB" }, { "Method": "'FakeItEasy (Multiple)'", - "Mean": "5,125.3 ns", - "Error": "36.29 ns", - "StdDev": "30.30 ns", + "Mean": "7,942.5 ns", + "Error": "46.50 ns", + "StdDev": "43.50 ns", "Gen0": "0.7019", - "Gen1": "0.0305", + "Gen1": "0.0153", "Allocated": "11.71 KB" } ], "Verification": [ { "Method": "TUnit.Mocks", - "Mean": "731.54 ns", - "Error": "4.708 ns", - "StdDev": "4.404 ns", + "Mean": "747.61 ns", + "Error": "2.649 ns", + "StdDev": "2.348 ns", "Gen0": "0.1774", "Gen1": "0.0010", "Allocated": "2968 B" }, { "Method": "Imposter", - "Mean": "704.15 ns", - "Error": "11.142 ns", - "StdDev": "10.422 ns", + "Mean": "692.33 ns", + "Error": "8.358 ns", + "StdDev": "7.818 ns", "Gen0": "0.2794", "Gen1": "0.0038", "Allocated": "4688 B" }, { "Method": "Mockolate", - "Mean": "402.06 ns", - "Error": "3.841 ns", - "StdDev": "3.593 ns", + "Mean": "422.96 ns", + "Error": "5.485 ns", + "StdDev": "5.130 ns", "Gen0": "0.1335", "Gen1": "0.0005", "Allocated": "2240 B" }, { "Method": "Moq", - "Mean": "240,476.37 ns", - "Error": "1,310.722 ns", - "StdDev": "1,094.512 ns", + "Mean": "248,130.32 ns", + "Error": "602.273 ns", + "StdDev": "563.367 ns", "Gen0": "0.9766", "Gen1": "0.4883", "Allocated": "24324 B" }, { "Method": "NSubstitute", - "Mean": "5,855.83 ns", - "Error": "71.533 ns", - "StdDev": "63.412 ns", - "Gen0": "0.5951", + "Mean": "5,863.08 ns", + "Error": "34.903 ns", + "StdDev": "32.649 ns", + "Gen0": "0.6027", "Gen1": "0.0076", - "Allocated": "10064 B" + "Allocated": "10176 B" }, { "Method": "FakeItEasy", - "Mean": "6,368.42 ns", - "Error": "42.748 ns", - "StdDev": "35.697 ns", + "Mean": "6,495.93 ns", + "Error": "51.650 ns", + "StdDev": "45.786 ns", "Gen0": "0.6409", "Gen1": "0.0153", "Allocated": "10722 B" }, { "Method": "'TUnit.Mocks (Never)'", - "Mean": "51.52 ns", - "Error": "0.170 ns", - "StdDev": "0.142 ns", + "Mean": "51.82 ns", + "Error": "0.155 ns", + "StdDev": "0.137 ns", "Gen0": "0.0181", "Gen1": "-", "Allocated": "304 B" }, { "Method": "'Imposter (Never)'", - "Mean": "320.22 ns", - "Error": "3.168 ns", - "StdDev": "2.963 ns", + "Mean": "323.52 ns", + "Error": "1.534 ns", + "StdDev": "1.360 ns", "Gen0": "0.1431", "Gen1": "0.0010", "Allocated": "2400 B" }, { "Method": "'Mockolate (Never)'", - "Mean": "254.20 ns", - "Error": "3.236 ns", - "StdDev": "3.027 ns", + "Mean": "249.31 ns", + "Error": "1.617 ns", + "StdDev": "1.512 ns", "Gen0": "0.0739", "Gen1": "-", "Allocated": "1240 B" }, { "Method": "'Moq (Never)'", - "Mean": "62,788.56 ns", - "Error": "373.250 ns", - "StdDev": "311.681 ns", + "Mean": "61,962.71 ns", + "Error": "566.032 ns", + "StdDev": "501.772 ns", "Gen0": "0.3662", "Gen1": "0.2441", - "Allocated": "7037 B" + "Allocated": "6925 B" }, { "Method": "'NSubstitute (Never)'", - "Mean": "3,628.13 ns", - "Error": "26.905 ns", - "StdDev": "23.851 ns", + "Mean": "3,445.53 ns", + "Error": "24.295 ns", + "StdDev": "22.725 ns", "Gen0": "0.4234", "Gen1": "0.0038", "Allocated": "7088 B" }, { "Method": "'FakeItEasy (Never)'", - "Mean": "3,479.17 ns", - "Error": "37.557 ns", - "StdDev": "33.293 ns", + "Mean": "3,465.76 ns", + "Error": "66.860 ns", + "StdDev": "82.111 ns", "Gen0": "0.3052", "Gen1": "0.0153", - "Allocated": "5210 B" + "Allocated": "5290 B" }, { "Method": "'TUnit.Mocks (Multiple)'", - "Mean": "1,287.59 ns", - "Error": "13.011 ns", - "StdDev": "11.534 ns", + "Mean": "1,248.69 ns", + "Error": "4.943 ns", + "StdDev": "4.382 ns", "Gen0": "0.2613", "Gen1": "0.0019", "Allocated": "4384 B" }, { "Method": "'Imposter (Multiple)'", - "Mean": "1,783.01 ns", - "Error": "35.245 ns", - "StdDev": "82.383 ns", + "Mean": "1,675.38 ns", + "Error": "10.927 ns", + "StdDev": "10.221 ns", "Gen0": "0.6676", - "Gen1": "0.0191", + "Gen1": "0.0210", "Allocated": "11192 B" }, { "Method": "'Mockolate (Multiple)'", - "Mean": "1,216.74 ns", - "Error": "23.968 ns", - "StdDev": "24.614 ns", + "Mean": "1,111.26 ns", + "Error": "19.421 ns", + "StdDev": "21.587 ns", "Gen0": "0.3204", "Gen1": "0.0038", "Allocated": "5376 B" }, { "Method": "'Moq (Multiple)'", - "Mean": "354,879.81 ns", - "Error": "3,387.848 ns", - "StdDev": "3,168.995 ns", + "Mean": "352,523.72 ns", + "Error": "4,464.400 ns", + "StdDev": "4,176.002 ns", "Gen0": "1.9531", "Gen1": "0.9766", "Allocated": "34699 B" }, { "Method": "'NSubstitute (Multiple)'", - "Mean": "10,539.34 ns", - "Error": "186.673 ns", - "StdDev": "174.614 ns", + "Mean": "10,333.48 ns", + "Error": "115.001 ns", + "StdDev": "107.572 ns", "Gen0": "0.9918", "Gen1": "0.0153", "Allocated": "16762 B" }, { "Method": "'FakeItEasy (Multiple)'", - "Mean": "11,423.54 ns", - "Error": "77.028 ns", - "StdDev": "64.322 ns", + "Mean": "11,714.57 ns", + "Error": "89.042 ns", + "StdDev": "74.354 ns", "Gen0": "1.0986", "Gen1": "0.0610", - "Allocated": "19232 B" + "Allocated": "19344 B" } ] }, "stats": { "categoryCount": 6, "totalBenchmarks": 78, - "lastUpdated": "2026-05-26T03:27:58.119Z" + "lastUpdated": "2026-05-27T03:29:35.677Z" } } \ No newline at end of file diff --git a/docs/static/benchmarks/mocks/summary.json b/docs/static/benchmarks/mocks/summary.json index d212c4d5a3..caedd263f8 100644 --- a/docs/static/benchmarks/mocks/summary.json +++ b/docs/static/benchmarks/mocks/summary.json @@ -7,7 +7,7 @@ "Setup", "Verification" ], - "timestamp": "2026-05-26", + "timestamp": "2026-05-27", "environment": "Ubuntu Latest • .NET SDK 10.0.300", "libraries": [ "TUnit.Mocks",