diff --git a/docs/docs/benchmarks/mocks/Callback.md b/docs/docs/benchmarks/mocks/Callback.md index 571c761879..47246a6601 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-03** from the latest CI run. +This benchmark was automatically generated on **2026-05-04** 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** | 600.8 ns | 2.68 ns | 2.50 ns | 2.98 KB | -| Imposter | 457.3 ns | 0.80 ns | 0.71 ns | 2.66 KB | -| Mockolate | 352.0 ns | 2.29 ns | 2.14 ns | 1.89 KB | -| Moq | 134,330.0 ns | 872.04 ns | 773.04 ns | 13.29 KB | -| NSubstitute | 4,186.9 ns | 45.24 ns | 42.32 ns | 7.93 KB | -| FakeItEasy | 4,551.3 ns | 31.13 ns | 27.59 ns | 7.44 KB | +| **TUnit.Mocks** | 632.1 ns | 5.31 ns | 4.43 ns | 2.98 KB | +| Imposter | 470.8 ns | 6.79 ns | 6.02 ns | 2.66 KB | +| Mockolate | 352.7 ns | 2.50 ns | 2.34 ns | 1.89 KB | +| Moq | 133,091.6 ns | 1,278.07 ns | 1,132.98 ns | 13.29 KB | +| NSubstitute | 4,171.9 ns | 72.15 ns | 67.49 ns | 7.93 KB | +| FakeItEasy | 4,812.0 ns | 95.87 ns | 114.13 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 --> 161196 - bar [600.8, 457.3, 352, 134330, 4186.9, 4551.3] + y-axis "Time (ns)" 0 --> 159710 + bar [632.1, 470.8, 352.7, 133091.6, 4171.9, 4812] ``` --- @@ -59,12 +59,12 @@ xychart-beta | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **TUnit.Mocks** | 685.6 ns | 4.16 ns | 3.89 ns | 3.06 KB | -| Imposter | 534.3 ns | 1.23 ns | 1.02 ns | 2.82 KB | -| Mockolate | 399.8 ns | 1.52 ns | 1.27 ns | 1.94 KB | -| Moq | 138,707.6 ns | 602.72 ns | 503.30 ns | 13.73 KB | -| NSubstitute | 4,542.1 ns | 31.29 ns | 29.27 ns | 8.53 KB | -| FakeItEasy | 5,632.5 ns | 25.15 ns | 22.30 ns | 9.4 KB | +| **TUnit.Mocks** | 710.4 ns | 6.88 ns | 6.43 ns | 3.06 KB | +| Imposter | 553.8 ns | 8.10 ns | 7.57 ns | 2.82 KB | +| Mockolate | 401.8 ns | 1.98 ns | 1.65 ns | 1.94 KB | +| Moq | 141,779.4 ns | 852.90 ns | 797.80 ns | 13.84 KB | +| NSubstitute | 4,804.9 ns | 76.36 ns | 71.43 ns | 8.53 KB | +| FakeItEasy | 5,540.7 ns | 31.53 ns | 29.49 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 --> 166450 - bar [685.6, 534.3, 399.8, 138707.6, 4542.1, 5632.5] + y-axis "Time (ns)" 0 --> 170136 + bar [710.4, 553.8, 401.8, 141779.4, 4804.9, 5540.7] ``` ## 🎯 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-03T03:31:53.295Z* +*Last generated: 2026-05-04T03:27:14.154Z* diff --git a/docs/docs/benchmarks/mocks/CombinedWorkflow.md b/docs/docs/benchmarks/mocks/CombinedWorkflow.md index b79ddb9cbf..73d12bb58f 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-03** from the latest CI run. +This benchmark was automatically generated on **2026-05-04** 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.708 μs | 0.0097 μs | 0.0091 μs | 5.8 KB | -| Imposter | 2.665 μs | 0.0220 μs | 0.0206 μs | 15.71 KB | -| Mockolate | 2.136 μs | 0.0123 μs | 0.0109 μs | 8.61 KB | -| Moq | 310.468 μs | 2.5555 μs | 2.1340 μs | 36.35 KB | -| NSubstitute | 15.975 μs | 0.1945 μs | 0.1819 μs | 26.72 KB | -| FakeItEasy | 16.872 μs | 0.3222 μs | 0.2856 μs | 25.63 KB | +| **TUnit.Mocks** | 1.640 μs | 0.0053 μs | 0.0044 μs | 5.8 KB | +| Imposter | 2.650 μs | 0.0186 μs | 0.0174 μs | 15.71 KB | +| Mockolate | 2.153 μs | 0.0069 μs | 0.0058 μs | 8.61 KB | +| Moq | 403.797 μs | 1.7805 μs | 1.6655 μs | 36.35 KB | +| NSubstitute | 17.345 μs | 0.0811 μs | 0.0758 μs | 26.72 KB | +| FakeItEasy | 17.907 μs | 0.1595 μs | 0.1332 μ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 --> 373 - bar [1.708, 2.665, 2.136, 310.468, 15.975, 16.872] + y-axis "Time (μs)" 0 --> 485 + bar [1.64, 2.65, 2.153, 403.797, 17.345, 17.907] ``` ## 🎯 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-03T03:31:53.295Z* +*Last generated: 2026-05-04T03:27:14.154Z* diff --git a/docs/docs/benchmarks/mocks/Invocation.md b/docs/docs/benchmarks/mocks/Invocation.md index a6edd576ea..6bb6dfd995 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-03** from the latest CI run. +This benchmark was automatically generated on **2026-05-04** 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** | 261.8 ns | 49.48 ns | 2.71 ns | 120 B | -| Imposter | 316.7 ns | 41.66 ns | 2.28 ns | 168 B | -| Mockolate | 150.1 ns | 131.86 ns | 7.23 ns | 84 B | -| Moq | 911.5 ns | 201.52 ns | 11.05 ns | 376 B | -| NSubstitute | 788.5 ns | 306.51 ns | 16.80 ns | 304 B | -| FakeItEasy | 1,934.1 ns | 404.26 ns | 22.16 ns | 944 B | +| **TUnit.Mocks** | 264.1 ns | 89.12 ns | 4.88 ns | 120 B | +| Imposter | 303.8 ns | 62.21 ns | 3.41 ns | 168 B | +| Mockolate | 125.6 ns | 59.23 ns | 3.25 ns | 84 B | +| Moq | 863.7 ns | 261.60 ns | 14.34 ns | 376 B | +| NSubstitute | 728.7 ns | 261.06 ns | 14.31 ns | 304 B | +| FakeItEasy | 1,830.8 ns | 918.34 ns | 50.34 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 --> 2321 - bar [261.8, 316.7, 150.1, 911.5, 788.5, 1934.1] + y-axis "Time (ns)" 0 --> 2197 + bar [264.1, 303.8, 125.6, 863.7, 728.7, 1830.8] ``` --- @@ -59,12 +59,12 @@ xychart-beta | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **TUnit.Mocks** | 158.2 ns | 72.08 ns | 3.95 ns | 88 B | -| Imposter | 320.8 ns | 170.07 ns | 9.32 ns | 168 B | -| Mockolate | 117.6 ns | 24.32 ns | 1.33 ns | 60 B | -| Moq | 622.5 ns | 268.24 ns | 14.70 ns | 296 B | -| NSubstitute | 654.8 ns | 188.65 ns | 10.34 ns | 272 B | -| FakeItEasy | 1,763.2 ns | 275.93 ns | 15.12 ns | 776 B | +| **TUnit.Mocks** | 153.1 ns | 74.06 ns | 4.06 ns | 88 B | +| Imposter | 297.2 ns | 60.74 ns | 3.33 ns | 168 B | +| Mockolate | 100.4 ns | 16.53 ns | 0.91 ns | 60 B | +| Moq | 549.4 ns | 81.25 ns | 4.45 ns | 296 B | +| NSubstitute | 626.9 ns | 190.77 ns | 10.46 ns | 272 B | +| FakeItEasy | 1,632.4 ns | 313.40 ns | 17.18 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 --> 2116 - bar [158.2, 320.8, 117.6, 622.5, 654.8, 1763.2] + y-axis "Time (ns)" 0 --> 1959 + bar [153.1, 297.2, 100.4, 549.4, 626.9, 1632.4] ``` --- @@ -100,12 +100,12 @@ xychart-beta | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **TUnit.Mocks** | 26,237.5 ns | 12,980.56 ns | 711.51 ns | 11936 B | -| Imposter | 30,549.7 ns | 9,876.33 ns | 541.35 ns | 16800 B | -| Mockolate | 13,344.3 ns | 3,030.53 ns | 166.11 ns | 8400 B | -| Moq | 83,209.8 ns | 5,937.43 ns | 325.45 ns | 37600 B | -| NSubstitute | 75,716.9 ns | 27,067.40 ns | 1,483.66 ns | 30848 B | -| FakeItEasy | 194,774.8 ns | 77,467.38 ns | 4,246.25 ns | 94400 B | +| **TUnit.Mocks** | 26,008.5 ns | 11,394.55 ns | 624.57 ns | 11936 B | +| Imposter | 29,371.5 ns | 5,520.22 ns | 302.58 ns | 16800 B | +| Mockolate | 11,587.0 ns | 10,066.29 ns | 551.77 ns | 8400 B | +| Moq | 82,933.5 ns | 19,464.28 ns | 1,066.90 ns | 37600 B | +| NSubstitute | 71,795.2 ns | 15,344.93 ns | 841.11 ns | 30848 B | +| FakeItEasy | 184,815.4 ns | 99,984.84 ns | 5,480.51 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 --> 233730 - bar [26237.5, 30549.7, 13344.3, 83209.8, 75716.9, 194774.8] + y-axis "Time (ns)" 0 --> 221779 + bar [26008.5, 29371.5, 11587, 82933.5, 71795.2, 184815.4] ``` ## 🎯 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-03T03:31:53.295Z* +*Last generated: 2026-05-04T03:27:14.154Z* diff --git a/docs/docs/benchmarks/mocks/MockCreation.md b/docs/docs/benchmarks/mocks/MockCreation.md index 8206973a2a..19f9302c1e 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-03** from the latest CI run. +This benchmark was automatically generated on **2026-05-04** 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** | 24.42 ns | 0.027 ns | 0.023 ns | 192 B | -| Imposter | 88.38 ns | 0.596 ns | 0.557 ns | 440 B | -| Mockolate | 58.08 ns | 0.224 ns | 0.175 ns | 424 B | -| Moq | 1,288.81 ns | 15.837 ns | 14.039 ns | 2048 B | -| NSubstitute | 1,717.52 ns | 5.581 ns | 4.947 ns | 5000 B | -| FakeItEasy | 1,566.49 ns | 5.740 ns | 4.794 ns | 2715 B | +| **TUnit.Mocks** | 24.47 ns | 0.056 ns | 0.053 ns | 192 B | +| Imposter | 90.86 ns | 1.349 ns | 1.262 ns | 440 B | +| Mockolate | 60.70 ns | 0.478 ns | 0.447 ns | 424 B | +| Moq | 1,285.59 ns | 21.437 ns | 17.900 ns | 2048 B | +| NSubstitute | 1,824.30 ns | 21.450 ns | 17.912 ns | 5000 B | +| FakeItEasy | 1,628.74 ns | 23.547 ns | 22.026 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 --> 2062 - bar [24.42, 88.38, 58.08, 1288.81, 1717.52, 1566.49] + y-axis "Time (ns)" 0 --> 2190 + bar [24.47, 90.86, 60.7, 1285.59, 1824.3, 1628.74] ``` --- @@ -59,12 +59,12 @@ xychart-beta | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **TUnit.Mocks** | 24.71 ns | 0.206 ns | 0.183 ns | 192 B | -| Imposter | 137.84 ns | 0.280 ns | 0.248 ns | 696 B | -| Mockolate | 58.62 ns | 0.367 ns | 0.307 ns | 456 B | -| Moq | 1,272.20 ns | 5.406 ns | 5.057 ns | 1912 B | -| NSubstitute | 1,811.44 ns | 18.671 ns | 17.465 ns | 5000 B | -| FakeItEasy | 1,678.73 ns | 23.736 ns | 21.042 ns | 2715 B | +| **TUnit.Mocks** | 25.27 ns | 0.127 ns | 0.119 ns | 192 B | +| Imposter | 140.41 ns | 0.987 ns | 0.824 ns | 696 B | +| Mockolate | 60.52 ns | 1.224 ns | 1.410 ns | 456 B | +| Moq | 1,304.83 ns | 8.028 ns | 7.509 ns | 1912 B | +| NSubstitute | 1,745.38 ns | 19.310 ns | 17.118 ns | 5000 B | +| FakeItEasy | 1,688.84 ns | 15.521 ns | 14.519 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 --> 2174 - bar [24.71, 137.84, 58.62, 1272.2, 1811.44, 1678.73] + y-axis "Time (ns)" 0 --> 2095 + bar [25.27, 140.41, 60.52, 1304.83, 1745.38, 1688.84] ``` ## 🎯 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-03T03:31:53.295Z* +*Last generated: 2026-05-04T03:27:14.154Z* diff --git a/docs/docs/benchmarks/mocks/Setup.md b/docs/docs/benchmarks/mocks/Setup.md index 28ed42b2a9..d8f1e0fbbd 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-03** from the latest CI run. +This benchmark was automatically generated on **2026-05-04** 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** | 438.7 ns | 6.67 ns | 5.57 ns | 2.01 KB | -| Imposter | 822.1 ns | 16.38 ns | 40.79 ns | 6.12 KB | -| Mockolate | 367.8 ns | 6.94 ns | 7.12 ns | 1.68 KB | -| Moq | 432,404.8 ns | 2,180.01 ns | 1,820.41 ns | 28.67 KB | -| NSubstitute | 6,012.0 ns | 88.30 ns | 82.60 ns | 9.01 KB | -| FakeItEasy | 8,634.9 ns | 35.43 ns | 29.58 ns | 10.45 KB | +| **TUnit.Mocks** | 445.0 ns | 8.92 ns | 11.91 ns | 2.01 KB | +| Imposter | 842.6 ns | 16.50 ns | 27.11 ns | 6.12 KB | +| Mockolate | 364.0 ns | 5.84 ns | 5.46 ns | 1.68 KB | +| Moq | 427,515.9 ns | 2,142.03 ns | 1,898.86 ns | 28.6 KB | +| NSubstitute | 5,761.0 ns | 67.82 ns | 63.44 ns | 9.06 KB | +| FakeItEasy | 8,288.3 ns | 44.02 ns | 39.02 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 --> 518886 - bar [438.7, 822.1, 367.8, 432404.8, 6012, 8634.9] + y-axis "Time (ns)" 0 --> 513020 + bar [445, 842.6, 364, 427515.9, 5761, 8288.3] ``` --- @@ -59,12 +59,12 @@ xychart-beta | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **TUnit.Mocks** | 654.5 ns | 11.22 ns | 10.49 ns | 2.59 KB | -| Imposter | 1,420.9 ns | 13.56 ns | 12.02 ns | 10.59 KB | -| Mockolate | 631.3 ns | 7.40 ns | 6.92 ns | 2.82 KB | -| Moq | 116,852.6 ns | 464.54 ns | 411.80 ns | 16.53 KB | -| NSubstitute | 12,773.1 ns | 173.55 ns | 144.92 ns | 20.5 KB | -| FakeItEasy | 7,948.2 ns | 61.47 ns | 47.99 ns | 11.71 KB | +| **TUnit.Mocks** | 643.0 ns | 12.56 ns | 17.19 ns | 2.59 KB | +| Imposter | 1,423.6 ns | 27.85 ns | 28.60 ns | 10.59 KB | +| Mockolate | 658.6 ns | 11.05 ns | 9.80 ns | 2.82 KB | +| Moq | 116,178.4 ns | 975.27 ns | 912.27 ns | 16.64 KB | +| NSubstitute | 12,327.7 ns | 84.31 ns | 78.86 ns | 20.34 KB | +| FakeItEasy | 8,025.4 ns | 60.87 ns | 53.96 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 --> 140224 - bar [654.5, 1420.9, 631.3, 116852.6, 12773.1, 7948.2] + y-axis "Time (ns)" 0 --> 139415 + bar [643, 1423.6, 658.6, 116178.4, 12327.7, 8025.4] ``` ## 🎯 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-03T03:31:53.295Z* +*Last generated: 2026-05-04T03:27:14.154Z* diff --git a/docs/docs/benchmarks/mocks/Verification.md b/docs/docs/benchmarks/mocks/Verification.md index fc684fdf1c..0262a58b85 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-03** from the latest CI run. +This benchmark was automatically generated on **2026-05-04** 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** | 642.77 ns | 8.884 ns | 7.419 ns | 2864 B | -| Imposter | 836.56 ns | 16.614 ns | 34.311 ns | 4688 B | -| Mockolate | 405.43 ns | 7.993 ns | 15.400 ns | 2224 B | -| Moq | 337,957.52 ns | 1,691.715 ns | 1,499.661 ns | 24325 B | -| NSubstitute | 6,215.39 ns | 41.262 ns | 34.456 ns | 10064 B | -| FakeItEasy | 7,463.26 ns | 130.864 ns | 122.410 ns | 10722 B | +| **TUnit.Mocks** | 650.23 ns | 5.652 ns | 5.287 ns | 2864 B | +| Imposter | 678.46 ns | 3.198 ns | 2.992 ns | 4688 B | +| Mockolate | 390.63 ns | 1.068 ns | 0.999 ns | 2224 B | +| Moq | 336,564.76 ns | 2,843.926 ns | 2,660.210 ns | 24325 B | +| NSubstitute | 6,141.24 ns | 29.519 ns | 24.650 ns | 10176 B | +| FakeItEasy | 7,042.11 ns | 25.420 ns | 22.534 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 --> 405550 - bar [642.77, 836.56, 405.43, 337957.52, 6215.39, 7463.26] + y-axis "Time (ns)" 0 --> 403878 + bar [650.23, 678.46, 390.63, 336564.76, 6141.24, 7042.11] ``` --- @@ -59,12 +59,12 @@ xychart-beta | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **TUnit.Mocks** | 49.13 ns | 0.785 ns | 0.696 ns | 304 B | -| Imposter | 320.12 ns | 4.573 ns | 4.277 ns | 2400 B | -| Mockolate | 240.68 ns | 3.390 ns | 3.171 ns | 1240 B | -| Moq | 86,020.50 ns | 343.409 ns | 286.762 ns | 6918 B | -| NSubstitute | 3,518.15 ns | 23.293 ns | 21.788 ns | 7088 B | -| FakeItEasy | 3,783.65 ns | 73.674 ns | 90.479 ns | 5210 B | +| **TUnit.Mocks** | 47.69 ns | 0.285 ns | 0.267 ns | 304 B | +| Imposter | 308.68 ns | 1.465 ns | 1.298 ns | 2400 B | +| Mockolate | 234.34 ns | 1.085 ns | 0.962 ns | 1240 B | +| Moq | 86,606.18 ns | 293.874 ns | 260.512 ns | 6918 B | +| NSubstitute | 3,511.67 ns | 6.119 ns | 4.777 ns | 7088 B | +| FakeItEasy | 3,508.18 ns | 8.200 ns | 6.847 ns | 5210 B | ```mermaid %%{init: { @@ -90,8 +90,8 @@ xychart-beta xychart-beta title "Verification (Never) Performance Comparison" x-axis ["TUnit.Mocks", "Imposter", "Mockolate", "Moq", "NSubstitute", "FakeItEasy"] - y-axis "Time (ns)" 0 --> 103225 - bar [49.13, 320.12, 240.68, 86020.5, 3518.15, 3783.65] + y-axis "Time (ns)" 0 --> 103928 + bar [47.69, 308.68, 234.34, 86606.18, 3511.67, 3508.18] ``` --- @@ -100,12 +100,12 @@ xychart-beta | Library | Mean | Error | StdDev | Allocated | |---------|------|-------|--------|-----------| -| **TUnit.Mocks** | 1,144.61 ns | 11.875 ns | 10.527 ns | 4176 B | -| Imposter | 1,732.59 ns | 34.075 ns | 31.873 ns | 11192 B | -| Mockolate | 1,164.21 ns | 11.636 ns | 10.315 ns | 5408 B | -| Moq | 466,365.74 ns | 3,065.300 ns | 2,867.283 ns | 34811 B | -| NSubstitute | 11,674.19 ns | 108.633 ns | 101.615 ns | 16929 B | -| FakeItEasy | 12,922.28 ns | 227.018 ns | 201.246 ns | 19233 B | +| **TUnit.Mocks** | 1,138.72 ns | 3.709 ns | 3.288 ns | 4176 B | +| Imposter | 1,707.14 ns | 7.728 ns | 6.851 ns | 11192 B | +| Mockolate | 1,112.94 ns | 3.114 ns | 2.913 ns | 5408 B | +| Moq | 467,026.33 ns | 3,771.042 ns | 3,527.435 ns | 34699 B | +| NSubstitute | 11,083.74 ns | 47.137 ns | 39.362 ns | 16762 B | +| FakeItEasy | 12,646.79 ns | 70.125 ns | 58.557 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 --> 559639 - bar [1144.61, 1732.59, 1164.21, 466365.74, 11674.19, 12922.28] + y-axis "Time (ns)" 0 --> 560432 + bar [1138.72, 1707.14, 1112.94, 467026.33, 11083.74, 12646.79] ``` ## 🎯 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-03T03:31:53.295Z* +*Last generated: 2026-05-04T03:27:14.154Z* diff --git a/docs/docs/benchmarks/mocks/index.md b/docs/docs/benchmarks/mocks/index.md index 8a33f6ae70..e1dcfec450 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-03** from the latest CI run. +These benchmarks were automatically generated on **2026-05-04** 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-03T03:31:53.295Z* +*Last generated: 2026-05-04T03:27:14.154Z* diff --git a/docs/static/benchmarks/mocks/Callback.json b/docs/static/benchmarks/mocks/Callback.json index 5955e32e1d..4a82a636e4 100644 --- a/docs/static/benchmarks/mocks/Callback.json +++ b/docs/static/benchmarks/mocks/Callback.json @@ -1,5 +1,5 @@ { - "timestamp": "2026-05-03T03:31:53.295Z", + "timestamp": "2026-05-04T03:27:14.154Z", "category": "Callback", "description": "Callback registration and execution", "environment": { @@ -10,110 +10,110 @@ "results": [ { "Method": "TUnit.Mocks", - "Mean": "600.8 ns", - "Error": "2.68 ns", - "StdDev": "2.50 ns", + "Mean": "632.1 ns", + "Error": "5.31 ns", + "StdDev": "4.43 ns", "Gen0": "0.1822", "Gen1": "0.0019", "Allocated": "2.98 KB" }, { "Method": "Imposter", - "Mean": "457.3 ns", - "Error": "0.80 ns", - "StdDev": "0.71 ns", - "Gen0": "0.1626", - "Gen1": "0.0014", + "Mean": "470.8 ns", + "Error": "6.79 ns", + "StdDev": "6.02 ns", + "Gen0": "0.1621", + "Gen1": "0.0010", "Allocated": "2.66 KB" }, { "Method": "Mockolate", - "Mean": "352.0 ns", - "Error": "2.29 ns", - "StdDev": "2.14 ns", + "Mean": "352.7 ns", + "Error": "2.50 ns", + "StdDev": "2.34 ns", "Gen0": "0.1154", "Gen1": "0.0005", "Allocated": "1.89 KB" }, { "Method": "Moq", - "Mean": "134,330.0 ns", - "Error": "872.04 ns", - "StdDev": "773.04 ns", + "Mean": "133,091.6 ns", + "Error": "1,278.07 ns", + "StdDev": "1,132.98 ns", "Gen0": "0.7324", "Gen1": "0.4883", "Allocated": "13.29 KB" }, { "Method": "NSubstitute", - "Mean": "4,186.9 ns", - "Error": "45.24 ns", - "StdDev": "42.32 ns", - "Gen0": "0.4578", - "Gen1": "-", + "Mean": "4,171.9 ns", + "Error": "72.15 ns", + "StdDev": "67.49 ns", + "Gen0": "0.4807", + "Gen1": "0.0076", "Allocated": "7.93 KB" }, { "Method": "FakeItEasy", - "Mean": "4,551.3 ns", - "Error": "31.13 ns", - "StdDev": "27.59 ns", - "Gen0": "0.4501", - "Gen1": "0.0153", + "Mean": "4,812.0 ns", + "Error": "95.87 ns", + "StdDev": "114.13 ns", + "Gen0": "0.4272", + "Gen1": "0.0305", "Allocated": "7.44 KB" }, { "Method": "'TUnit.Mocks (with args)'", - "Mean": "685.6 ns", - "Error": "4.16 ns", - "StdDev": "3.89 ns", + "Mean": "710.4 ns", + "Error": "6.88 ns", + "StdDev": "6.43 ns", "Gen0": "0.1869", "Gen1": "0.0019", "Allocated": "3.06 KB" }, { "Method": "'Imposter (with args)'", - "Mean": "534.3 ns", - "Error": "1.23 ns", - "StdDev": "1.02 ns", + "Mean": "553.8 ns", + "Error": "8.10 ns", + "StdDev": "7.57 ns", "Gen0": "0.1726", "Gen1": "0.0010", "Allocated": "2.82 KB" }, { "Method": "'Mockolate (with args)'", - "Mean": "399.8 ns", - "Error": "1.52 ns", - "StdDev": "1.27 ns", + "Mean": "401.8 ns", + "Error": "1.98 ns", + "StdDev": "1.65 ns", "Gen0": "0.1183", "Gen1": "0.0005", "Allocated": "1.94 KB" }, { "Method": "'Moq (with args)'", - "Mean": "138,707.6 ns", - "Error": "602.72 ns", - "StdDev": "503.30 ns", + "Mean": "141,779.4 ns", + "Error": "852.90 ns", + "StdDev": "797.80 ns", "Gen0": "0.4883", "Gen1": "-", - "Allocated": "13.73 KB" + "Allocated": "13.84 KB" }, { "Method": "'NSubstitute (with args)'", - "Mean": "4,542.1 ns", - "Error": "31.29 ns", - "StdDev": "29.27 ns", + "Mean": "4,804.9 ns", + "Error": "76.36 ns", + "StdDev": "71.43 ns", "Gen0": "0.5188", "Gen1": "0.0076", "Allocated": "8.53 KB" }, { "Method": "'FakeItEasy (with args)'", - "Mean": "5,632.5 ns", - "Error": "25.15 ns", - "StdDev": "22.30 ns", - "Gen0": "0.5722", - "Gen1": "0.0153", + "Mean": "5,540.7 ns", + "Error": "31.53 ns", + "StdDev": "29.49 ns", + "Gen0": "0.5493", + "Gen1": "0.0305", "Allocated": "9.4 KB" } ] diff --git a/docs/static/benchmarks/mocks/CombinedWorkflow.json b/docs/static/benchmarks/mocks/CombinedWorkflow.json index f38e901790..af974d89dd 100644 --- a/docs/static/benchmarks/mocks/CombinedWorkflow.json +++ b/docs/static/benchmarks/mocks/CombinedWorkflow.json @@ -1,5 +1,5 @@ { - "timestamp": "2026-05-03T03:31:53.295Z", + "timestamp": "2026-05-04T03:27:14.154Z", "category": "CombinedWorkflow", "description": "Full workflow: create → setup → invoke → verify", "environment": { @@ -10,57 +10,57 @@ "results": [ { "Method": "TUnit.Mocks", - "Mean": "1.708 μs", - "Error": "0.0097 μs", - "StdDev": "0.0091 μs", + "Mean": "1.640 μs", + "Error": "0.0053 μs", + "StdDev": "0.0044 μs", "Gen0": "0.3548", "Gen1": "0.0057", "Allocated": "5.8 KB" }, { "Method": "Imposter", - "Mean": "2.665 μs", - "Error": "0.0220 μs", - "StdDev": "0.0206 μs", + "Mean": "2.650 μs", + "Error": "0.0186 μs", + "StdDev": "0.0174 μs", "Gen0": "0.9613", "Gen1": "0.0458", "Allocated": "15.71 KB" }, { "Method": "Mockolate", - "Mean": "2.136 μs", - "Error": "0.0123 μs", - "StdDev": "0.0109 μs", + "Mean": "2.153 μs", + "Error": "0.0069 μs", + "StdDev": "0.0058 μs", "Gen0": "0.5264", "Gen1": "0.0076", "Allocated": "8.61 KB" }, { "Method": "Moq", - "Mean": "310.468 μs", - "Error": "2.5555 μs", - "StdDev": "2.1340 μs", + "Mean": "403.797 μs", + "Error": "1.7805 μs", + "StdDev": "1.6655 μs", "Gen0": "1.9531", "Gen1": "0.9766", "Allocated": "36.35 KB" }, { "Method": "NSubstitute", - "Mean": "15.975 μs", - "Error": "0.1945 μs", - "StdDev": "0.1819 μs", + "Mean": "17.345 μs", + "Error": "0.0811 μs", + "StdDev": "0.0758 μs", "Gen0": "1.6174", "Gen1": "0.0305", "Allocated": "26.72 KB" }, { "Method": "FakeItEasy", - "Mean": "16.872 μs", - "Error": "0.3222 μs", - "StdDev": "0.2856 μs", + "Mean": "17.907 μs", + "Error": "0.1595 μs", + "StdDev": "0.1332 μs", "Gen0": "1.4648", "Gen1": "0.1221", - "Allocated": "25.63 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 03dc16057f..89f50cd5c9 100644 --- a/docs/static/benchmarks/mocks/Invocation.json +++ b/docs/static/benchmarks/mocks/Invocation.json @@ -1,5 +1,5 @@ { - "timestamp": "2026-05-03T03:31:53.295Z", + "timestamp": "2026-05-04T03:27:14.154Z", "category": "Invocation", "description": "Calling methods on mock objects", "environment": { @@ -10,162 +10,162 @@ "results": [ { "Method": "TUnit.Mocks", - "Mean": "261.8 ns", - "Error": "49.48 ns", - "StdDev": "2.71 ns", + "Mean": "264.1 ns", + "Error": "89.12 ns", + "StdDev": "4.88 ns", "Gen0": "0.0062", "Gen1": "0.0057", "Allocated": "120 B" }, { "Method": "Imposter", - "Mean": "316.7 ns", - "Error": "41.66 ns", - "StdDev": "2.28 ns", + "Mean": "303.8 ns", + "Error": "62.21 ns", + "StdDev": "3.41 ns", "Gen0": "0.0100", "Gen1": "0.0095", "Allocated": "168 B" }, { "Method": "Mockolate", - "Mean": "150.1 ns", - "Error": "131.86 ns", - "StdDev": "7.23 ns", + "Mean": "125.6 ns", + "Error": "59.23 ns", + "StdDev": "3.25 ns", "Gen0": "0.0050", "Gen1": "0.0048", "Allocated": "84 B" }, { "Method": "Moq", - "Mean": "911.5 ns", - "Error": "201.52 ns", - "StdDev": "11.05 ns", + "Mean": "863.7 ns", + "Error": "261.60 ns", + "StdDev": "14.34 ns", "Gen0": "0.0219", "Gen1": "0.0210", "Allocated": "376 B" }, { "Method": "NSubstitute", - "Mean": "788.5 ns", - "Error": "306.51 ns", - "StdDev": "16.80 ns", + "Mean": "728.7 ns", + "Error": "261.06 ns", + "StdDev": "14.31 ns", "Gen0": "0.0172", "Gen1": "0.0162", "Allocated": "304 B" }, { "Method": "FakeItEasy", - "Mean": "1,934.1 ns", - "Error": "404.26 ns", - "StdDev": "22.16 ns", - "Gen0": "0.0534", - "Gen1": "0.0496", + "Mean": "1,830.8 ns", + "Error": "918.34 ns", + "StdDev": "50.34 ns", + "Gen0": "0.0553", + "Gen1": "0.0534", "Allocated": "944 B" }, { "Method": "'TUnit.Mocks (String)'", - "Mean": "158.2 ns", - "Error": "72.08 ns", - "StdDev": "3.95 ns", + "Mean": "153.1 ns", + "Error": "74.06 ns", + "StdDev": "4.06 ns", "Gen0": "0.0048", "Gen1": "0.0045", "Allocated": "88 B" }, { "Method": "'Imposter (String)'", - "Mean": "320.8 ns", - "Error": "170.07 ns", - "StdDev": "9.32 ns", + "Mean": "297.2 ns", + "Error": "60.74 ns", + "StdDev": "3.33 ns", "Gen0": "0.0100", "Gen1": "0.0095", "Allocated": "168 B" }, { "Method": "'Mockolate (String)'", - "Mean": "117.6 ns", - "Error": "24.32 ns", - "StdDev": "1.33 ns", + "Mean": "100.4 ns", + "Error": "16.53 ns", + "StdDev": "0.91 ns", "Gen0": "0.0036", - "Gen1": "0.0033", + "Gen1": "0.0035", "Allocated": "60 B" }, { "Method": "'Moq (String)'", - "Mean": "622.5 ns", - "Error": "268.24 ns", - "StdDev": "14.70 ns", + "Mean": "549.4 ns", + "Error": "81.25 ns", + "StdDev": "4.45 ns", "Gen0": "0.0172", "Gen1": "0.0162", "Allocated": "296 B" }, { "Method": "'NSubstitute (String)'", - "Mean": "654.8 ns", - "Error": "188.65 ns", - "StdDev": "10.34 ns", + "Mean": "626.9 ns", + "Error": "190.77 ns", + "StdDev": "10.46 ns", "Gen0": "0.0153", "Gen1": "0.0143", "Allocated": "272 B" }, { "Method": "'FakeItEasy (String)'", - "Mean": "1,763.2 ns", - "Error": "275.93 ns", - "StdDev": "15.12 ns", + "Mean": "1,632.4 ns", + "Error": "313.40 ns", + "StdDev": "17.18 ns", "Gen0": "0.0458", "Gen1": "0.0439", "Allocated": "776 B" }, { "Method": "'TUnit.Mocks (100 calls)'", - "Mean": "26,237.5 ns", - "Error": "12,980.56 ns", - "StdDev": "711.51 ns", + "Mean": "26,008.5 ns", + "Error": "11,394.55 ns", + "StdDev": "624.57 ns", "Gen0": "0.6104", "Gen1": "0.5798", "Allocated": "11936 B" }, { "Method": "'Imposter (100 calls)'", - "Mean": "30,549.7 ns", - "Error": "9,876.33 ns", - "StdDev": "541.35 ns", + "Mean": "29,371.5 ns", + "Error": "5,520.22 ns", + "StdDev": "302.58 ns", "Gen0": "0.9766", "Gen1": "0.9155", "Allocated": "16800 B" }, { "Method": "'Mockolate (100 calls)'", - "Mean": "13,344.3 ns", - "Error": "3,030.53 ns", - "StdDev": "166.11 ns", + "Mean": "11,587.0 ns", + "Error": "10,066.29 ns", + "StdDev": "551.77 ns", "Gen0": "0.4883", "Gen1": "0.4730", "Allocated": "8400 B" }, { "Method": "'Moq (100 calls)'", - "Mean": "83,209.8 ns", - "Error": "5,937.43 ns", - "StdDev": "325.45 ns", + "Mean": "82,933.5 ns", + "Error": "19,464.28 ns", + "StdDev": "1,066.90 ns", "Gen0": "2.1973", "Gen1": "2.0752", "Allocated": "37600 B" }, { "Method": "'NSubstitute (100 calls)'", - "Mean": "75,716.9 ns", - "Error": "27,067.40 ns", - "StdDev": "1,483.66 ns", + "Mean": "71,795.2 ns", + "Error": "15,344.93 ns", + "StdDev": "841.11 ns", "Gen0": "1.7090", "Gen1": "1.5869", "Allocated": "30848 B" }, { "Method": "'FakeItEasy (100 calls)'", - "Mean": "194,774.8 ns", - "Error": "77,467.38 ns", - "StdDev": "4,246.25 ns", + "Mean": "184,815.4 ns", + "Error": "99,984.84 ns", + "StdDev": "5,480.51 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 3487d55f10..fd81c46604 100644 --- a/docs/static/benchmarks/mocks/MockCreation.json +++ b/docs/static/benchmarks/mocks/MockCreation.json @@ -1,5 +1,5 @@ { - "timestamp": "2026-05-03T03:31:53.295Z", + "timestamp": "2026-05-04T03:27:14.154Z", "category": "MockCreation", "description": "Mock instance creation performance", "environment": { @@ -10,9 +10,9 @@ "results": [ { "Method": "TUnit.Mocks", - "Mean": "24.42 ns", - "Error": "0.027 ns", - "StdDev": "0.023 ns", + "Mean": "24.47 ns", + "Error": "0.056 ns", + "StdDev": "0.053 ns", "Gen0": "0.0115", "Gen1": "-", "Gen2": "-", @@ -20,9 +20,9 @@ }, { "Method": "Imposter", - "Mean": "88.38 ns", - "Error": "0.596 ns", - "StdDev": "0.557 ns", + "Mean": "90.86 ns", + "Error": "1.349 ns", + "StdDev": "1.262 ns", "Gen0": "0.0262", "Gen1": "-", "Gen2": "-", @@ -30,9 +30,9 @@ }, { "Method": "Mockolate", - "Mean": "58.08 ns", - "Error": "0.224 ns", - "StdDev": "0.175 ns", + "Mean": "60.70 ns", + "Error": "0.478 ns", + "StdDev": "0.447 ns", "Gen0": "0.0253", "Gen1": "-", "Gen2": "-", @@ -40,9 +40,9 @@ }, { "Method": "Moq", - "Mean": "1,288.81 ns", - "Error": "15.837 ns", - "StdDev": "14.039 ns", + "Mean": "1,285.59 ns", + "Error": "21.437 ns", + "StdDev": "17.900 ns", "Gen0": "0.1221", "Gen1": "-", "Gen2": "-", @@ -50,9 +50,9 @@ }, { "Method": "NSubstitute", - "Mean": "1,717.52 ns", - "Error": "5.581 ns", - "StdDev": "4.947 ns", + "Mean": "1,824.30 ns", + "Error": "21.450 ns", + "StdDev": "17.912 ns", "Gen0": "0.2975", "Gen1": "0.0019", "Gen2": "-", @@ -60,9 +60,9 @@ }, { "Method": "FakeItEasy", - "Mean": "1,566.49 ns", - "Error": "5.740 ns", - "StdDev": "4.794 ns", + "Mean": "1,628.74 ns", + "Error": "23.547 ns", + "StdDev": "22.026 ns", "Gen0": "0.1602", "Gen1": "0.0038", "Gen2": "0.0019", @@ -70,9 +70,9 @@ }, { "Method": "'TUnit.Mocks (Repository)'", - "Mean": "24.71 ns", - "Error": "0.206 ns", - "StdDev": "0.183 ns", + "Mean": "25.27 ns", + "Error": "0.127 ns", + "StdDev": "0.119 ns", "Gen0": "0.0115", "Gen1": "-", "Gen2": "-", @@ -80,9 +80,9 @@ }, { "Method": "'Imposter (Repository)'", - "Mean": "137.84 ns", - "Error": "0.280 ns", - "StdDev": "0.248 ns", + "Mean": "140.41 ns", + "Error": "0.987 ns", + "StdDev": "0.824 ns", "Gen0": "0.0415", "Gen1": "-", "Gen2": "-", @@ -90,9 +90,9 @@ }, { "Method": "'Mockolate (Repository)'", - "Mean": "58.62 ns", - "Error": "0.367 ns", - "StdDev": "0.307 ns", + "Mean": "60.52 ns", + "Error": "1.224 ns", + "StdDev": "1.410 ns", "Gen0": "0.0272", "Gen1": "-", "Gen2": "-", @@ -100,9 +100,9 @@ }, { "Method": "'Moq (Repository)'", - "Mean": "1,272.20 ns", - "Error": "5.406 ns", - "StdDev": "5.057 ns", + "Mean": "1,304.83 ns", + "Error": "8.028 ns", + "StdDev": "7.509 ns", "Gen0": "0.1125", "Gen1": "-", "Gen2": "-", @@ -110,9 +110,9 @@ }, { "Method": "'NSubstitute (Repository)'", - "Mean": "1,811.44 ns", - "Error": "18.671 ns", - "StdDev": "17.465 ns", + "Mean": "1,745.38 ns", + "Error": "19.310 ns", + "StdDev": "17.118 ns", "Gen0": "0.2975", "Gen1": "0.0019", "Gen2": "-", @@ -120,9 +120,9 @@ }, { "Method": "'FakeItEasy (Repository)'", - "Mean": "1,678.73 ns", - "Error": "23.736 ns", - "StdDev": "21.042 ns", + "Mean": "1,688.84 ns", + "Error": "15.521 ns", + "StdDev": "14.519 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 336b9a5006..8ee3d6fcb1 100644 --- a/docs/static/benchmarks/mocks/Setup.json +++ b/docs/static/benchmarks/mocks/Setup.json @@ -1,5 +1,5 @@ { - "timestamp": "2026-05-03T03:31:53.295Z", + "timestamp": "2026-05-04T03:27:14.154Z", "category": "Setup", "description": "Mock behavior configuration (returns, matchers)", "environment": { @@ -10,120 +10,108 @@ "results": [ { "Method": "TUnit.Mocks", - "Mean": "438.7 ns", - "Error": "6.67 ns", - "StdDev": "5.57 ns", - "Median": "440.1 ns", + "Mean": "445.0 ns", + "Error": "8.92 ns", + "StdDev": "11.91 ns", "Gen0": "0.1225", "Gen1": "0.0005", "Allocated": "2.01 KB" }, { "Method": "Imposter", - "Mean": "822.1 ns", - "Error": "16.38 ns", - "StdDev": "40.79 ns", - "Median": "807.0 ns", + "Mean": "842.6 ns", + "Error": "16.50 ns", + "StdDev": "27.11 ns", "Gen0": "0.3738", "Gen1": "0.0076", "Allocated": "6.12 KB" }, { "Method": "Mockolate", - "Mean": "367.8 ns", - "Error": "6.94 ns", - "StdDev": "7.12 ns", - "Median": "366.2 ns", + "Mean": "364.0 ns", + "Error": "5.84 ns", + "StdDev": "5.46 ns", "Gen0": "0.1025", "Gen1": "0.0005", "Allocated": "1.68 KB" }, { "Method": "Moq", - "Mean": "432,404.8 ns", - "Error": "2,180.01 ns", - "StdDev": "1,820.41 ns", - "Median": "432,088.8 ns", + "Mean": "427,515.9 ns", + "Error": "2,142.03 ns", + "StdDev": "1,898.86 ns", "Gen0": "0.9766", "Gen1": "-", - "Allocated": "28.67 KB" + "Allocated": "28.6 KB" }, { "Method": "NSubstitute", - "Mean": "6,012.0 ns", - "Error": "88.30 ns", - "StdDev": "82.60 ns", - "Median": "6,002.9 ns", + "Mean": "5,761.0 ns", + "Error": "67.82 ns", + "StdDev": "63.44 ns", "Gen0": "0.5493", - "Gen1": "-", - "Allocated": "9.01 KB" + "Gen1": "0.0076", + "Allocated": "9.06 KB" }, { "Method": "FakeItEasy", - "Mean": "8,634.9 ns", - "Error": "35.43 ns", - "StdDev": "29.58 ns", - "Median": "8,647.2 ns", + "Mean": "8,288.3 ns", + "Error": "44.02 ns", + "StdDev": "39.02 ns", "Gen0": "0.6256", "Gen1": "0.0153", "Allocated": "10.45 KB" }, { "Method": "'TUnit.Mocks (Multiple)'", - "Mean": "654.5 ns", - "Error": "11.22 ns", - "StdDev": "10.49 ns", - "Median": "655.6 ns", + "Mean": "643.0 ns", + "Error": "12.56 ns", + "StdDev": "17.19 ns", "Gen0": "0.1574", "Gen1": "0.0010", "Allocated": "2.59 KB" }, { "Method": "'Imposter (Multiple)'", - "Mean": "1,420.9 ns", - "Error": "13.56 ns", - "StdDev": "12.02 ns", - "Median": "1,419.0 ns", + "Mean": "1,423.6 ns", + "Error": "27.85 ns", + "StdDev": "28.60 ns", "Gen0": "0.6485", "Gen1": "0.0248", "Allocated": "10.59 KB" }, { "Method": "'Mockolate (Multiple)'", - "Mean": "631.3 ns", - "Error": "7.40 ns", - "StdDev": "6.92 ns", - "Median": "629.7 ns", + "Mean": "658.6 ns", + "Error": "11.05 ns", + "StdDev": "9.80 ns", "Gen0": "0.1726", "Gen1": "0.0010", "Allocated": "2.82 KB" }, { "Method": "'Moq (Multiple)'", - "Mean": "116,852.6 ns", - "Error": "464.54 ns", - "StdDev": "411.80 ns", - "Median": "116,884.1 ns", + "Mean": "116,178.4 ns", + "Error": "975.27 ns", + "StdDev": "912.27 ns", "Gen0": "0.9766", "Gen1": "0.7324", - "Allocated": "16.53 KB" + "Allocated": "16.64 KB" }, { "Method": "'NSubstitute (Multiple)'", - "Mean": "12,773.1 ns", - "Error": "173.55 ns", - "StdDev": "144.92 ns", - "Median": "12,744.6 ns", + "Mean": "12,327.7 ns", + "Error": "84.31 ns", + "StdDev": "78.86 ns", "Gen0": "1.2207", "Gen1": "-", - "Allocated": "20.5 KB" + "Allocated": "20.34 KB" }, { "Method": "'FakeItEasy (Multiple)'", - "Mean": "7,948.2 ns", - "Error": "61.47 ns", - "StdDev": "47.99 ns", - "Median": "7,945.5 ns", + "Mean": "8,025.4 ns", + "Error": "60.87 ns", + "StdDev": "53.96 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 8e586698da..3cfe20d9c3 100644 --- a/docs/static/benchmarks/mocks/Verification.json +++ b/docs/static/benchmarks/mocks/Verification.json @@ -1,5 +1,5 @@ { - "timestamp": "2026-05-03T03:31:53.295Z", + "timestamp": "2026-05-04T03:27:14.154Z", "category": "Verification", "description": "Verifying mock method calls", "environment": { @@ -10,162 +10,162 @@ "results": [ { "Method": "TUnit.Mocks", - "Mean": "642.77 ns", - "Error": "8.884 ns", - "StdDev": "7.419 ns", + "Mean": "650.23 ns", + "Error": "5.652 ns", + "StdDev": "5.287 ns", "Gen0": "0.1707", "Gen1": "0.0010", "Allocated": "2864 B" }, { "Method": "Imposter", - "Mean": "836.56 ns", - "Error": "16.614 ns", - "StdDev": "34.311 ns", + "Mean": "678.46 ns", + "Error": "3.198 ns", + "StdDev": "2.992 ns", "Gen0": "0.2794", "Gen1": "0.0038", "Allocated": "4688 B" }, { "Method": "Mockolate", - "Mean": "405.43 ns", - "Error": "7.993 ns", - "StdDev": "15.400 ns", + "Mean": "390.63 ns", + "Error": "1.068 ns", + "StdDev": "0.999 ns", "Gen0": "0.1326", "Gen1": "0.0005", "Allocated": "2224 B" }, { "Method": "Moq", - "Mean": "337,957.52 ns", - "Error": "1,691.715 ns", - "StdDev": "1,499.661 ns", + "Mean": "336,564.76 ns", + "Error": "2,843.926 ns", + "StdDev": "2,660.210 ns", "Gen0": "0.9766", "Gen1": "-", "Allocated": "24325 B" }, { "Method": "NSubstitute", - "Mean": "6,215.39 ns", - "Error": "41.262 ns", - "StdDev": "34.456 ns", - "Gen0": "0.5951", - "Gen1": "0.0076", - "Allocated": "10064 B" + "Mean": "6,141.24 ns", + "Error": "29.519 ns", + "StdDev": "24.650 ns", + "Gen0": "0.5493", + "Gen1": "-", + "Allocated": "10176 B" }, { "Method": "FakeItEasy", - "Mean": "7,463.26 ns", - "Error": "130.864 ns", - "StdDev": "122.410 ns", + "Mean": "7,042.11 ns", + "Error": "25.420 ns", + "StdDev": "22.534 ns", "Gen0": "0.6409", "Gen1": "0.0153", "Allocated": "10722 B" }, { "Method": "'TUnit.Mocks (Never)'", - "Mean": "49.13 ns", - "Error": "0.785 ns", - "StdDev": "0.696 ns", + "Mean": "47.69 ns", + "Error": "0.285 ns", + "StdDev": "0.267 ns", "Gen0": "0.0181", "Gen1": "-", "Allocated": "304 B" }, { "Method": "'Imposter (Never)'", - "Mean": "320.12 ns", - "Error": "4.573 ns", - "StdDev": "4.277 ns", + "Mean": "308.68 ns", + "Error": "1.465 ns", + "StdDev": "1.298 ns", "Gen0": "0.1431", "Gen1": "0.0010", "Allocated": "2400 B" }, { "Method": "'Mockolate (Never)'", - "Mean": "240.68 ns", - "Error": "3.390 ns", - "StdDev": "3.171 ns", + "Mean": "234.34 ns", + "Error": "1.085 ns", + "StdDev": "0.962 ns", "Gen0": "0.0739", "Gen1": "-", "Allocated": "1240 B" }, { "Method": "'Moq (Never)'", - "Mean": "86,020.50 ns", - "Error": "343.409 ns", - "StdDev": "286.762 ns", + "Mean": "86,606.18 ns", + "Error": "293.874 ns", + "StdDev": "260.512 ns", "Gen0": "0.2441", "Gen1": "-", "Allocated": "6918 B" }, { "Method": "'NSubstitute (Never)'", - "Mean": "3,518.15 ns", - "Error": "23.293 ns", - "StdDev": "21.788 ns", + "Mean": "3,511.67 ns", + "Error": "6.119 ns", + "StdDev": "4.777 ns", "Gen0": "0.4234", "Gen1": "0.0038", "Allocated": "7088 B" }, { "Method": "'FakeItEasy (Never)'", - "Mean": "3,783.65 ns", - "Error": "73.674 ns", - "StdDev": "90.479 ns", - "Gen0": "0.3090", + "Mean": "3,508.18 ns", + "Error": "8.200 ns", + "StdDev": "6.847 ns", + "Gen0": "0.3052", "Gen1": "0.0076", "Allocated": "5210 B" }, { "Method": "'TUnit.Mocks (Multiple)'", - "Mean": "1,144.61 ns", - "Error": "11.875 ns", - "StdDev": "10.527 ns", + "Mean": "1,138.72 ns", + "Error": "3.709 ns", + "StdDev": "3.288 ns", "Gen0": "0.2480", "Gen1": "0.0019", "Allocated": "4176 B" }, { "Method": "'Imposter (Multiple)'", - "Mean": "1,732.59 ns", - "Error": "34.075 ns", - "StdDev": "31.873 ns", + "Mean": "1,707.14 ns", + "Error": "7.728 ns", + "StdDev": "6.851 ns", "Gen0": "0.6676", "Gen1": "0.0210", "Allocated": "11192 B" }, { "Method": "'Mockolate (Multiple)'", - "Mean": "1,164.21 ns", - "Error": "11.636 ns", - "StdDev": "10.315 ns", + "Mean": "1,112.94 ns", + "Error": "3.114 ns", + "StdDev": "2.913 ns", "Gen0": "0.3223", "Gen1": "0.0038", "Allocated": "5408 B" }, { "Method": "'Moq (Multiple)'", - "Mean": "466,365.74 ns", - "Error": "3,065.300 ns", - "StdDev": "2,867.283 ns", + "Mean": "467,026.33 ns", + "Error": "3,771.042 ns", + "StdDev": "3,527.435 ns", "Gen0": "1.9531", "Gen1": "0.9766", - "Allocated": "34811 B" + "Allocated": "34699 B" }, { "Method": "'NSubstitute (Multiple)'", - "Mean": "11,674.19 ns", - "Error": "108.633 ns", - "StdDev": "101.615 ns", - "Gen0": "0.9766", - "Gen1": "-", - "Allocated": "16929 B" + "Mean": "11,083.74 ns", + "Error": "47.137 ns", + "StdDev": "39.362 ns", + "Gen0": "0.9918", + "Gen1": "0.0153", + "Allocated": "16762 B" }, { "Method": "'FakeItEasy (Multiple)'", - "Mean": "12,922.28 ns", - "Error": "227.018 ns", - "StdDev": "201.246 ns", + "Mean": "12,646.79 ns", + "Error": "70.125 ns", + "StdDev": "58.557 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 9627d870a6..486a8eee89 100644 --- a/docs/static/benchmarks/mocks/latest.json +++ b/docs/static/benchmarks/mocks/latest.json @@ -1,5 +1,5 @@ { - "timestamp": "2026-05-03T03:31:53.295Z", + "timestamp": "2026-05-04T03:27:14.154Z", "environment": { "benchmarkDotNetVersion": "BenchmarkDotNet v0.15.8, Linux Ubuntu 24.04.4 LTS (Noble Numbat)", "sdk": ".NET SDK 10.0.203", @@ -9,328 +9,328 @@ "Callback": [ { "Method": "TUnit.Mocks", - "Mean": "600.8 ns", - "Error": "2.68 ns", - "StdDev": "2.50 ns", + "Mean": "632.1 ns", + "Error": "5.31 ns", + "StdDev": "4.43 ns", "Gen0": "0.1822", "Gen1": "0.0019", "Allocated": "2.98 KB" }, { "Method": "Imposter", - "Mean": "457.3 ns", - "Error": "0.80 ns", - "StdDev": "0.71 ns", - "Gen0": "0.1626", - "Gen1": "0.0014", + "Mean": "470.8 ns", + "Error": "6.79 ns", + "StdDev": "6.02 ns", + "Gen0": "0.1621", + "Gen1": "0.0010", "Allocated": "2.66 KB" }, { "Method": "Mockolate", - "Mean": "352.0 ns", - "Error": "2.29 ns", - "StdDev": "2.14 ns", + "Mean": "352.7 ns", + "Error": "2.50 ns", + "StdDev": "2.34 ns", "Gen0": "0.1154", "Gen1": "0.0005", "Allocated": "1.89 KB" }, { "Method": "Moq", - "Mean": "134,330.0 ns", - "Error": "872.04 ns", - "StdDev": "773.04 ns", + "Mean": "133,091.6 ns", + "Error": "1,278.07 ns", + "StdDev": "1,132.98 ns", "Gen0": "0.7324", "Gen1": "0.4883", "Allocated": "13.29 KB" }, { "Method": "NSubstitute", - "Mean": "4,186.9 ns", - "Error": "45.24 ns", - "StdDev": "42.32 ns", - "Gen0": "0.4578", - "Gen1": "-", + "Mean": "4,171.9 ns", + "Error": "72.15 ns", + "StdDev": "67.49 ns", + "Gen0": "0.4807", + "Gen1": "0.0076", "Allocated": "7.93 KB" }, { "Method": "FakeItEasy", - "Mean": "4,551.3 ns", - "Error": "31.13 ns", - "StdDev": "27.59 ns", - "Gen0": "0.4501", - "Gen1": "0.0153", + "Mean": "4,812.0 ns", + "Error": "95.87 ns", + "StdDev": "114.13 ns", + "Gen0": "0.4272", + "Gen1": "0.0305", "Allocated": "7.44 KB" }, { "Method": "'TUnit.Mocks (with args)'", - "Mean": "685.6 ns", - "Error": "4.16 ns", - "StdDev": "3.89 ns", + "Mean": "710.4 ns", + "Error": "6.88 ns", + "StdDev": "6.43 ns", "Gen0": "0.1869", "Gen1": "0.0019", "Allocated": "3.06 KB" }, { "Method": "'Imposter (with args)'", - "Mean": "534.3 ns", - "Error": "1.23 ns", - "StdDev": "1.02 ns", + "Mean": "553.8 ns", + "Error": "8.10 ns", + "StdDev": "7.57 ns", "Gen0": "0.1726", "Gen1": "0.0010", "Allocated": "2.82 KB" }, { "Method": "'Mockolate (with args)'", - "Mean": "399.8 ns", - "Error": "1.52 ns", - "StdDev": "1.27 ns", + "Mean": "401.8 ns", + "Error": "1.98 ns", + "StdDev": "1.65 ns", "Gen0": "0.1183", "Gen1": "0.0005", "Allocated": "1.94 KB" }, { "Method": "'Moq (with args)'", - "Mean": "138,707.6 ns", - "Error": "602.72 ns", - "StdDev": "503.30 ns", + "Mean": "141,779.4 ns", + "Error": "852.90 ns", + "StdDev": "797.80 ns", "Gen0": "0.4883", "Gen1": "-", - "Allocated": "13.73 KB" + "Allocated": "13.84 KB" }, { "Method": "'NSubstitute (with args)'", - "Mean": "4,542.1 ns", - "Error": "31.29 ns", - "StdDev": "29.27 ns", + "Mean": "4,804.9 ns", + "Error": "76.36 ns", + "StdDev": "71.43 ns", "Gen0": "0.5188", "Gen1": "0.0076", "Allocated": "8.53 KB" }, { "Method": "'FakeItEasy (with args)'", - "Mean": "5,632.5 ns", - "Error": "25.15 ns", - "StdDev": "22.30 ns", - "Gen0": "0.5722", - "Gen1": "0.0153", + "Mean": "5,540.7 ns", + "Error": "31.53 ns", + "StdDev": "29.49 ns", + "Gen0": "0.5493", + "Gen1": "0.0305", "Allocated": "9.4 KB" } ], "CombinedWorkflow": [ { "Method": "TUnit.Mocks", - "Mean": "1.708 μs", - "Error": "0.0097 μs", - "StdDev": "0.0091 μs", + "Mean": "1.640 μs", + "Error": "0.0053 μs", + "StdDev": "0.0044 μs", "Gen0": "0.3548", "Gen1": "0.0057", "Allocated": "5.8 KB" }, { "Method": "Imposter", - "Mean": "2.665 μs", - "Error": "0.0220 μs", - "StdDev": "0.0206 μs", + "Mean": "2.650 μs", + "Error": "0.0186 μs", + "StdDev": "0.0174 μs", "Gen0": "0.9613", "Gen1": "0.0458", "Allocated": "15.71 KB" }, { "Method": "Mockolate", - "Mean": "2.136 μs", - "Error": "0.0123 μs", - "StdDev": "0.0109 μs", + "Mean": "2.153 μs", + "Error": "0.0069 μs", + "StdDev": "0.0058 μs", "Gen0": "0.5264", "Gen1": "0.0076", "Allocated": "8.61 KB" }, { "Method": "Moq", - "Mean": "310.468 μs", - "Error": "2.5555 μs", - "StdDev": "2.1340 μs", + "Mean": "403.797 μs", + "Error": "1.7805 μs", + "StdDev": "1.6655 μs", "Gen0": "1.9531", "Gen1": "0.9766", "Allocated": "36.35 KB" }, { "Method": "NSubstitute", - "Mean": "15.975 μs", - "Error": "0.1945 μs", - "StdDev": "0.1819 μs", + "Mean": "17.345 μs", + "Error": "0.0811 μs", + "StdDev": "0.0758 μs", "Gen0": "1.6174", "Gen1": "0.0305", "Allocated": "26.72 KB" }, { "Method": "FakeItEasy", - "Mean": "16.872 μs", - "Error": "0.3222 μs", - "StdDev": "0.2856 μs", + "Mean": "17.907 μs", + "Error": "0.1595 μs", + "StdDev": "0.1332 μs", "Gen0": "1.4648", "Gen1": "0.1221", - "Allocated": "25.63 KB" + "Allocated": "25.52 KB" } ], "Invocation": [ { "Method": "TUnit.Mocks", - "Mean": "261.8 ns", - "Error": "49.48 ns", - "StdDev": "2.71 ns", + "Mean": "264.1 ns", + "Error": "89.12 ns", + "StdDev": "4.88 ns", "Gen0": "0.0062", "Gen1": "0.0057", "Allocated": "120 B" }, { "Method": "Imposter", - "Mean": "316.7 ns", - "Error": "41.66 ns", - "StdDev": "2.28 ns", + "Mean": "303.8 ns", + "Error": "62.21 ns", + "StdDev": "3.41 ns", "Gen0": "0.0100", "Gen1": "0.0095", "Allocated": "168 B" }, { "Method": "Mockolate", - "Mean": "150.1 ns", - "Error": "131.86 ns", - "StdDev": "7.23 ns", + "Mean": "125.6 ns", + "Error": "59.23 ns", + "StdDev": "3.25 ns", "Gen0": "0.0050", "Gen1": "0.0048", "Allocated": "84 B" }, { "Method": "Moq", - "Mean": "911.5 ns", - "Error": "201.52 ns", - "StdDev": "11.05 ns", + "Mean": "863.7 ns", + "Error": "261.60 ns", + "StdDev": "14.34 ns", "Gen0": "0.0219", "Gen1": "0.0210", "Allocated": "376 B" }, { "Method": "NSubstitute", - "Mean": "788.5 ns", - "Error": "306.51 ns", - "StdDev": "16.80 ns", + "Mean": "728.7 ns", + "Error": "261.06 ns", + "StdDev": "14.31 ns", "Gen0": "0.0172", "Gen1": "0.0162", "Allocated": "304 B" }, { "Method": "FakeItEasy", - "Mean": "1,934.1 ns", - "Error": "404.26 ns", - "StdDev": "22.16 ns", - "Gen0": "0.0534", - "Gen1": "0.0496", + "Mean": "1,830.8 ns", + "Error": "918.34 ns", + "StdDev": "50.34 ns", + "Gen0": "0.0553", + "Gen1": "0.0534", "Allocated": "944 B" }, { "Method": "'TUnit.Mocks (String)'", - "Mean": "158.2 ns", - "Error": "72.08 ns", - "StdDev": "3.95 ns", + "Mean": "153.1 ns", + "Error": "74.06 ns", + "StdDev": "4.06 ns", "Gen0": "0.0048", "Gen1": "0.0045", "Allocated": "88 B" }, { "Method": "'Imposter (String)'", - "Mean": "320.8 ns", - "Error": "170.07 ns", - "StdDev": "9.32 ns", + "Mean": "297.2 ns", + "Error": "60.74 ns", + "StdDev": "3.33 ns", "Gen0": "0.0100", "Gen1": "0.0095", "Allocated": "168 B" }, { "Method": "'Mockolate (String)'", - "Mean": "117.6 ns", - "Error": "24.32 ns", - "StdDev": "1.33 ns", + "Mean": "100.4 ns", + "Error": "16.53 ns", + "StdDev": "0.91 ns", "Gen0": "0.0036", - "Gen1": "0.0033", + "Gen1": "0.0035", "Allocated": "60 B" }, { "Method": "'Moq (String)'", - "Mean": "622.5 ns", - "Error": "268.24 ns", - "StdDev": "14.70 ns", + "Mean": "549.4 ns", + "Error": "81.25 ns", + "StdDev": "4.45 ns", "Gen0": "0.0172", "Gen1": "0.0162", "Allocated": "296 B" }, { "Method": "'NSubstitute (String)'", - "Mean": "654.8 ns", - "Error": "188.65 ns", - "StdDev": "10.34 ns", + "Mean": "626.9 ns", + "Error": "190.77 ns", + "StdDev": "10.46 ns", "Gen0": "0.0153", "Gen1": "0.0143", "Allocated": "272 B" }, { "Method": "'FakeItEasy (String)'", - "Mean": "1,763.2 ns", - "Error": "275.93 ns", - "StdDev": "15.12 ns", + "Mean": "1,632.4 ns", + "Error": "313.40 ns", + "StdDev": "17.18 ns", "Gen0": "0.0458", "Gen1": "0.0439", "Allocated": "776 B" }, { "Method": "'TUnit.Mocks (100 calls)'", - "Mean": "26,237.5 ns", - "Error": "12,980.56 ns", - "StdDev": "711.51 ns", + "Mean": "26,008.5 ns", + "Error": "11,394.55 ns", + "StdDev": "624.57 ns", "Gen0": "0.6104", "Gen1": "0.5798", "Allocated": "11936 B" }, { "Method": "'Imposter (100 calls)'", - "Mean": "30,549.7 ns", - "Error": "9,876.33 ns", - "StdDev": "541.35 ns", + "Mean": "29,371.5 ns", + "Error": "5,520.22 ns", + "StdDev": "302.58 ns", "Gen0": "0.9766", "Gen1": "0.9155", "Allocated": "16800 B" }, { "Method": "'Mockolate (100 calls)'", - "Mean": "13,344.3 ns", - "Error": "3,030.53 ns", - "StdDev": "166.11 ns", + "Mean": "11,587.0 ns", + "Error": "10,066.29 ns", + "StdDev": "551.77 ns", "Gen0": "0.4883", "Gen1": "0.4730", "Allocated": "8400 B" }, { "Method": "'Moq (100 calls)'", - "Mean": "83,209.8 ns", - "Error": "5,937.43 ns", - "StdDev": "325.45 ns", + "Mean": "82,933.5 ns", + "Error": "19,464.28 ns", + "StdDev": "1,066.90 ns", "Gen0": "2.1973", "Gen1": "2.0752", "Allocated": "37600 B" }, { "Method": "'NSubstitute (100 calls)'", - "Mean": "75,716.9 ns", - "Error": "27,067.40 ns", - "StdDev": "1,483.66 ns", + "Mean": "71,795.2 ns", + "Error": "15,344.93 ns", + "StdDev": "841.11 ns", "Gen0": "1.7090", "Gen1": "1.5869", "Allocated": "30848 B" }, { "Method": "'FakeItEasy (100 calls)'", - "Mean": "194,774.8 ns", - "Error": "77,467.38 ns", - "StdDev": "4,246.25 ns", + "Mean": "184,815.4 ns", + "Error": "99,984.84 ns", + "StdDev": "5,480.51 ns", "Gen0": "5.6152", "Gen1": "5.3711", "Allocated": "94400 B" @@ -339,9 +339,9 @@ "MockCreation": [ { "Method": "TUnit.Mocks", - "Mean": "24.42 ns", - "Error": "0.027 ns", - "StdDev": "0.023 ns", + "Mean": "24.47 ns", + "Error": "0.056 ns", + "StdDev": "0.053 ns", "Gen0": "0.0115", "Gen1": "-", "Gen2": "-", @@ -349,9 +349,9 @@ }, { "Method": "Imposter", - "Mean": "88.38 ns", - "Error": "0.596 ns", - "StdDev": "0.557 ns", + "Mean": "90.86 ns", + "Error": "1.349 ns", + "StdDev": "1.262 ns", "Gen0": "0.0262", "Gen1": "-", "Gen2": "-", @@ -359,9 +359,9 @@ }, { "Method": "Mockolate", - "Mean": "58.08 ns", - "Error": "0.224 ns", - "StdDev": "0.175 ns", + "Mean": "60.70 ns", + "Error": "0.478 ns", + "StdDev": "0.447 ns", "Gen0": "0.0253", "Gen1": "-", "Gen2": "-", @@ -369,9 +369,9 @@ }, { "Method": "Moq", - "Mean": "1,288.81 ns", - "Error": "15.837 ns", - "StdDev": "14.039 ns", + "Mean": "1,285.59 ns", + "Error": "21.437 ns", + "StdDev": "17.900 ns", "Gen0": "0.1221", "Gen1": "-", "Gen2": "-", @@ -379,9 +379,9 @@ }, { "Method": "NSubstitute", - "Mean": "1,717.52 ns", - "Error": "5.581 ns", - "StdDev": "4.947 ns", + "Mean": "1,824.30 ns", + "Error": "21.450 ns", + "StdDev": "17.912 ns", "Gen0": "0.2975", "Gen1": "0.0019", "Gen2": "-", @@ -389,9 +389,9 @@ }, { "Method": "FakeItEasy", - "Mean": "1,566.49 ns", - "Error": "5.740 ns", - "StdDev": "4.794 ns", + "Mean": "1,628.74 ns", + "Error": "23.547 ns", + "StdDev": "22.026 ns", "Gen0": "0.1602", "Gen1": "0.0038", "Gen2": "0.0019", @@ -399,9 +399,9 @@ }, { "Method": "'TUnit.Mocks (Repository)'", - "Mean": "24.71 ns", - "Error": "0.206 ns", - "StdDev": "0.183 ns", + "Mean": "25.27 ns", + "Error": "0.127 ns", + "StdDev": "0.119 ns", "Gen0": "0.0115", "Gen1": "-", "Gen2": "-", @@ -409,9 +409,9 @@ }, { "Method": "'Imposter (Repository)'", - "Mean": "137.84 ns", - "Error": "0.280 ns", - "StdDev": "0.248 ns", + "Mean": "140.41 ns", + "Error": "0.987 ns", + "StdDev": "0.824 ns", "Gen0": "0.0415", "Gen1": "-", "Gen2": "-", @@ -419,9 +419,9 @@ }, { "Method": "'Mockolate (Repository)'", - "Mean": "58.62 ns", - "Error": "0.367 ns", - "StdDev": "0.307 ns", + "Mean": "60.52 ns", + "Error": "1.224 ns", + "StdDev": "1.410 ns", "Gen0": "0.0272", "Gen1": "-", "Gen2": "-", @@ -429,9 +429,9 @@ }, { "Method": "'Moq (Repository)'", - "Mean": "1,272.20 ns", - "Error": "5.406 ns", - "StdDev": "5.057 ns", + "Mean": "1,304.83 ns", + "Error": "8.028 ns", + "StdDev": "7.509 ns", "Gen0": "0.1125", "Gen1": "-", "Gen2": "-", @@ -439,9 +439,9 @@ }, { "Method": "'NSubstitute (Repository)'", - "Mean": "1,811.44 ns", - "Error": "18.671 ns", - "StdDev": "17.465 ns", + "Mean": "1,745.38 ns", + "Error": "19.310 ns", + "StdDev": "17.118 ns", "Gen0": "0.2975", "Gen1": "0.0019", "Gen2": "-", @@ -449,9 +449,9 @@ }, { "Method": "'FakeItEasy (Repository)'", - "Mean": "1,678.73 ns", - "Error": "23.736 ns", - "StdDev": "21.042 ns", + "Mean": "1,688.84 ns", + "Error": "15.521 ns", + "StdDev": "14.519 ns", "Gen0": "0.1602", "Gen1": "0.0038", "Gen2": "0.0019", @@ -461,120 +461,108 @@ "Setup": [ { "Method": "TUnit.Mocks", - "Mean": "438.7 ns", - "Error": "6.67 ns", - "StdDev": "5.57 ns", - "Median": "440.1 ns", + "Mean": "445.0 ns", + "Error": "8.92 ns", + "StdDev": "11.91 ns", "Gen0": "0.1225", "Gen1": "0.0005", "Allocated": "2.01 KB" }, { "Method": "Imposter", - "Mean": "822.1 ns", - "Error": "16.38 ns", - "StdDev": "40.79 ns", - "Median": "807.0 ns", + "Mean": "842.6 ns", + "Error": "16.50 ns", + "StdDev": "27.11 ns", "Gen0": "0.3738", "Gen1": "0.0076", "Allocated": "6.12 KB" }, { "Method": "Mockolate", - "Mean": "367.8 ns", - "Error": "6.94 ns", - "StdDev": "7.12 ns", - "Median": "366.2 ns", + "Mean": "364.0 ns", + "Error": "5.84 ns", + "StdDev": "5.46 ns", "Gen0": "0.1025", "Gen1": "0.0005", "Allocated": "1.68 KB" }, { "Method": "Moq", - "Mean": "432,404.8 ns", - "Error": "2,180.01 ns", - "StdDev": "1,820.41 ns", - "Median": "432,088.8 ns", + "Mean": "427,515.9 ns", + "Error": "2,142.03 ns", + "StdDev": "1,898.86 ns", "Gen0": "0.9766", "Gen1": "-", - "Allocated": "28.67 KB" + "Allocated": "28.6 KB" }, { "Method": "NSubstitute", - "Mean": "6,012.0 ns", - "Error": "88.30 ns", - "StdDev": "82.60 ns", - "Median": "6,002.9 ns", + "Mean": "5,761.0 ns", + "Error": "67.82 ns", + "StdDev": "63.44 ns", "Gen0": "0.5493", - "Gen1": "-", - "Allocated": "9.01 KB" + "Gen1": "0.0076", + "Allocated": "9.06 KB" }, { "Method": "FakeItEasy", - "Mean": "8,634.9 ns", - "Error": "35.43 ns", - "StdDev": "29.58 ns", - "Median": "8,647.2 ns", + "Mean": "8,288.3 ns", + "Error": "44.02 ns", + "StdDev": "39.02 ns", "Gen0": "0.6256", "Gen1": "0.0153", "Allocated": "10.45 KB" }, { "Method": "'TUnit.Mocks (Multiple)'", - "Mean": "654.5 ns", - "Error": "11.22 ns", - "StdDev": "10.49 ns", - "Median": "655.6 ns", + "Mean": "643.0 ns", + "Error": "12.56 ns", + "StdDev": "17.19 ns", "Gen0": "0.1574", "Gen1": "0.0010", "Allocated": "2.59 KB" }, { "Method": "'Imposter (Multiple)'", - "Mean": "1,420.9 ns", - "Error": "13.56 ns", - "StdDev": "12.02 ns", - "Median": "1,419.0 ns", + "Mean": "1,423.6 ns", + "Error": "27.85 ns", + "StdDev": "28.60 ns", "Gen0": "0.6485", "Gen1": "0.0248", "Allocated": "10.59 KB" }, { "Method": "'Mockolate (Multiple)'", - "Mean": "631.3 ns", - "Error": "7.40 ns", - "StdDev": "6.92 ns", - "Median": "629.7 ns", + "Mean": "658.6 ns", + "Error": "11.05 ns", + "StdDev": "9.80 ns", "Gen0": "0.1726", "Gen1": "0.0010", "Allocated": "2.82 KB" }, { "Method": "'Moq (Multiple)'", - "Mean": "116,852.6 ns", - "Error": "464.54 ns", - "StdDev": "411.80 ns", - "Median": "116,884.1 ns", + "Mean": "116,178.4 ns", + "Error": "975.27 ns", + "StdDev": "912.27 ns", "Gen0": "0.9766", "Gen1": "0.7324", - "Allocated": "16.53 KB" + "Allocated": "16.64 KB" }, { "Method": "'NSubstitute (Multiple)'", - "Mean": "12,773.1 ns", - "Error": "173.55 ns", - "StdDev": "144.92 ns", - "Median": "12,744.6 ns", + "Mean": "12,327.7 ns", + "Error": "84.31 ns", + "StdDev": "78.86 ns", "Gen0": "1.2207", "Gen1": "-", - "Allocated": "20.5 KB" + "Allocated": "20.34 KB" }, { "Method": "'FakeItEasy (Multiple)'", - "Mean": "7,948.2 ns", - "Error": "61.47 ns", - "StdDev": "47.99 ns", - "Median": "7,945.5 ns", + "Mean": "8,025.4 ns", + "Error": "60.87 ns", + "StdDev": "53.96 ns", "Gen0": "0.6714", "Gen1": "0.0610", "Allocated": "11.71 KB" @@ -583,162 +571,162 @@ "Verification": [ { "Method": "TUnit.Mocks", - "Mean": "642.77 ns", - "Error": "8.884 ns", - "StdDev": "7.419 ns", + "Mean": "650.23 ns", + "Error": "5.652 ns", + "StdDev": "5.287 ns", "Gen0": "0.1707", "Gen1": "0.0010", "Allocated": "2864 B" }, { "Method": "Imposter", - "Mean": "836.56 ns", - "Error": "16.614 ns", - "StdDev": "34.311 ns", + "Mean": "678.46 ns", + "Error": "3.198 ns", + "StdDev": "2.992 ns", "Gen0": "0.2794", "Gen1": "0.0038", "Allocated": "4688 B" }, { "Method": "Mockolate", - "Mean": "405.43 ns", - "Error": "7.993 ns", - "StdDev": "15.400 ns", + "Mean": "390.63 ns", + "Error": "1.068 ns", + "StdDev": "0.999 ns", "Gen0": "0.1326", "Gen1": "0.0005", "Allocated": "2224 B" }, { "Method": "Moq", - "Mean": "337,957.52 ns", - "Error": "1,691.715 ns", - "StdDev": "1,499.661 ns", + "Mean": "336,564.76 ns", + "Error": "2,843.926 ns", + "StdDev": "2,660.210 ns", "Gen0": "0.9766", "Gen1": "-", "Allocated": "24325 B" }, { "Method": "NSubstitute", - "Mean": "6,215.39 ns", - "Error": "41.262 ns", - "StdDev": "34.456 ns", - "Gen0": "0.5951", - "Gen1": "0.0076", - "Allocated": "10064 B" + "Mean": "6,141.24 ns", + "Error": "29.519 ns", + "StdDev": "24.650 ns", + "Gen0": "0.5493", + "Gen1": "-", + "Allocated": "10176 B" }, { "Method": "FakeItEasy", - "Mean": "7,463.26 ns", - "Error": "130.864 ns", - "StdDev": "122.410 ns", + "Mean": "7,042.11 ns", + "Error": "25.420 ns", + "StdDev": "22.534 ns", "Gen0": "0.6409", "Gen1": "0.0153", "Allocated": "10722 B" }, { "Method": "'TUnit.Mocks (Never)'", - "Mean": "49.13 ns", - "Error": "0.785 ns", - "StdDev": "0.696 ns", + "Mean": "47.69 ns", + "Error": "0.285 ns", + "StdDev": "0.267 ns", "Gen0": "0.0181", "Gen1": "-", "Allocated": "304 B" }, { "Method": "'Imposter (Never)'", - "Mean": "320.12 ns", - "Error": "4.573 ns", - "StdDev": "4.277 ns", + "Mean": "308.68 ns", + "Error": "1.465 ns", + "StdDev": "1.298 ns", "Gen0": "0.1431", "Gen1": "0.0010", "Allocated": "2400 B" }, { "Method": "'Mockolate (Never)'", - "Mean": "240.68 ns", - "Error": "3.390 ns", - "StdDev": "3.171 ns", + "Mean": "234.34 ns", + "Error": "1.085 ns", + "StdDev": "0.962 ns", "Gen0": "0.0739", "Gen1": "-", "Allocated": "1240 B" }, { "Method": "'Moq (Never)'", - "Mean": "86,020.50 ns", - "Error": "343.409 ns", - "StdDev": "286.762 ns", + "Mean": "86,606.18 ns", + "Error": "293.874 ns", + "StdDev": "260.512 ns", "Gen0": "0.2441", "Gen1": "-", "Allocated": "6918 B" }, { "Method": "'NSubstitute (Never)'", - "Mean": "3,518.15 ns", - "Error": "23.293 ns", - "StdDev": "21.788 ns", + "Mean": "3,511.67 ns", + "Error": "6.119 ns", + "StdDev": "4.777 ns", "Gen0": "0.4234", "Gen1": "0.0038", "Allocated": "7088 B" }, { "Method": "'FakeItEasy (Never)'", - "Mean": "3,783.65 ns", - "Error": "73.674 ns", - "StdDev": "90.479 ns", - "Gen0": "0.3090", + "Mean": "3,508.18 ns", + "Error": "8.200 ns", + "StdDev": "6.847 ns", + "Gen0": "0.3052", "Gen1": "0.0076", "Allocated": "5210 B" }, { "Method": "'TUnit.Mocks (Multiple)'", - "Mean": "1,144.61 ns", - "Error": "11.875 ns", - "StdDev": "10.527 ns", + "Mean": "1,138.72 ns", + "Error": "3.709 ns", + "StdDev": "3.288 ns", "Gen0": "0.2480", "Gen1": "0.0019", "Allocated": "4176 B" }, { "Method": "'Imposter (Multiple)'", - "Mean": "1,732.59 ns", - "Error": "34.075 ns", - "StdDev": "31.873 ns", + "Mean": "1,707.14 ns", + "Error": "7.728 ns", + "StdDev": "6.851 ns", "Gen0": "0.6676", "Gen1": "0.0210", "Allocated": "11192 B" }, { "Method": "'Mockolate (Multiple)'", - "Mean": "1,164.21 ns", - "Error": "11.636 ns", - "StdDev": "10.315 ns", + "Mean": "1,112.94 ns", + "Error": "3.114 ns", + "StdDev": "2.913 ns", "Gen0": "0.3223", "Gen1": "0.0038", "Allocated": "5408 B" }, { "Method": "'Moq (Multiple)'", - "Mean": "466,365.74 ns", - "Error": "3,065.300 ns", - "StdDev": "2,867.283 ns", + "Mean": "467,026.33 ns", + "Error": "3,771.042 ns", + "StdDev": "3,527.435 ns", "Gen0": "1.9531", "Gen1": "0.9766", - "Allocated": "34811 B" + "Allocated": "34699 B" }, { "Method": "'NSubstitute (Multiple)'", - "Mean": "11,674.19 ns", - "Error": "108.633 ns", - "StdDev": "101.615 ns", - "Gen0": "0.9766", - "Gen1": "-", - "Allocated": "16929 B" + "Mean": "11,083.74 ns", + "Error": "47.137 ns", + "StdDev": "39.362 ns", + "Gen0": "0.9918", + "Gen1": "0.0153", + "Allocated": "16762 B" }, { "Method": "'FakeItEasy (Multiple)'", - "Mean": "12,922.28 ns", - "Error": "227.018 ns", - "StdDev": "201.246 ns", + "Mean": "12,646.79 ns", + "Error": "70.125 ns", + "StdDev": "58.557 ns", "Gen0": "1.0986", "Gen1": "-", "Allocated": "19233 B" @@ -748,6 +736,6 @@ "stats": { "categoryCount": 6, "totalBenchmarks": 78, - "lastUpdated": "2026-05-03T03:31:53.295Z" + "lastUpdated": "2026-05-04T03:27:14.154Z" } } \ No newline at end of file diff --git a/docs/static/benchmarks/mocks/summary.json b/docs/static/benchmarks/mocks/summary.json index 8699a9b10a..60a915bba4 100644 --- a/docs/static/benchmarks/mocks/summary.json +++ b/docs/static/benchmarks/mocks/summary.json @@ -7,7 +7,7 @@ "Setup", "Verification" ], - "timestamp": "2026-05-03", + "timestamp": "2026-05-04", "environment": "Ubuntu Latest • .NET SDK 10.0.203", "libraries": [ "TUnit.Mocks",