Skip to content

MonoModBenchmark50

wuke32767 edited this page Feb 9, 2026 · 1 revision

9c8671015be9e8fc7ec8d48b27ee0a238d449ed5

All of these methods have 7 int parameters.

Inlining is not marked as NoInlining, the rests are marked as NoInlining.

OnHook* is onhooked.

ILHook* is ilhooked.

the number is hook count.


BenchmarkDotNet v0.14.0, Ubuntu 24.04.3 LTS (Noble Numbat)
AMD EPYC 7763, 1 CPU, 4 logical and 2 physical cores
.NET SDK 10.0.102
  [Host]     : .NET 9.0.12 (9.0.1225.60609), X64 RyuJIT AVX2
  DefaultJob : .NET 9.0.12 (9.0.1225.60609), X64 RyuJIT AVX2


Method Mean Error StdDev Median
Inlining 0.0000 ns 0.0002 ns 0.0002 ns 0.0000 ns
NoInlining 1.5554 ns 0.0020 ns 0.0015 ns 1.5554 ns
OnHook1 41.6645 ns 0.0968 ns 0.0858 ns 41.6413 ns
OnHook50 1,622.5911 ns 0.7458 ns 0.6228 ns 1,622.4291 ns
ILHook1 20.9589 ns 0.0231 ns 0.0216 ns 20.9526 ns
ILHook50 20.9737 ns 0.0128 ns 0.0119 ns 20.9701 ns

// * Detailed results *

MonoModBenchmark50.Inlining: DefaultJob

Runtime = .NET 9.0.12 (9.0.1225.60609), X64 RyuJIT AVX2; GC = Concurrent Workstation

Mean = 0.000 ns, StdErr = 0.000 ns (100.00%), N = 14, StdDev = 0.000 ns

Min = 0.000 ns, Q1 = 0.000 ns, Median = 0.000 ns, Q3 = 0.000 ns, Max = 0.001 ns

IQR = 0.000 ns, LowerFence = 0.000 ns, UpperFence = 0.000 ns

ConfidenceInterval = [-0.000 ns; 0.000 ns] (CI 99.9%), Margin = 0.000 ns (422.08% of Mean)

Skewness = 2.98, Kurtosis = 10.41, MValue = 2

-------------------- Histogram --------------------

[-0.000 ns ; 0.000 ns) | @@@@@@@@@@@@@

[ 0.000 ns ; 0.000 ns) |

[ 0.000 ns ; 0.001 ns) |

[ 0.001 ns ; 0.001 ns) | @


MonoModBenchmark50.NoInlining: DefaultJob

Runtime = .NET 9.0.12 (9.0.1225.60609), X64 RyuJIT AVX2; GC = Concurrent Workstation

Mean = 1.555 ns, StdErr = 0.000 ns (0.03%), N = 12, StdDev = 0.002 ns

Min = 1.553 ns, Q1 = 1.555 ns, Median = 1.555 ns, Q3 = 1.556 ns, Max = 1.559 ns

IQR = 0.002 ns, LowerFence = 1.552 ns, UpperFence = 1.559 ns

ConfidenceInterval = [1.553 ns; 1.557 ns] (CI 99.9%), Margin = 0.002 ns (0.13% of Mean)

Skewness = 0.31, Kurtosis = 2.71, MValue = 2

-------------------- Histogram --------------------

[1.552 ns ; 1.560 ns) | @@@@@@@@@@@@


MonoModBenchmark50.OnHook1: DefaultJob

Runtime = .NET 9.0.12 (9.0.1225.60609), X64 RyuJIT AVX2; GC = Concurrent Workstation

Mean = 41.664 ns, StdErr = 0.023 ns (0.06%), N = 14, StdDev = 0.086 ns

Min = 41.573 ns, Q1 = 41.601 ns, Median = 41.641 ns, Q3 = 41.694 ns, Max = 41.862 ns

IQR = 0.093 ns, LowerFence = 41.462 ns, UpperFence = 41.834 ns

ConfidenceInterval = [41.568 ns; 41.761 ns] (CI 99.9%), Margin = 0.097 ns (0.23% of Mean)

Skewness = 0.85, Kurtosis = 2.63, MValue = 2

-------------------- Histogram --------------------

[41.526 ns ; 41.908 ns) | @@@@@@@@@@@@@@


MonoModBenchmark50.OnHook50: DefaultJob

Runtime = .NET 9.0.12 (9.0.1225.60609), X64 RyuJIT AVX2; GC = Concurrent Workstation

Mean = 1.623 μs, StdErr = 0.000 μs (0.01%), N = 13, StdDev = 0.001 μs

Min = 1.622 μs, Q1 = 1.622 μs, Median = 1.622 μs, Q3 = 1.623 μs, Max = 1.624 μs

IQR = 0.001 μs, LowerFence = 1.621 μs, UpperFence = 1.624 μs

ConfidenceInterval = [1.622 μs; 1.623 μs] (CI 99.9%), Margin = 0.001 μs (0.05% of Mean)

Skewness = 0.38, Kurtosis = 1.81, MValue = 2

-------------------- Histogram --------------------

[1.621 μs ; 1.624 μs) | @@@@@@@@@@@@@


MonoModBenchmark50.ILHook1: DefaultJob

Runtime = .NET 9.0.12 (9.0.1225.60609), X64 RyuJIT AVX2; GC = Concurrent Workstation

Mean = 20.959 ns, StdErr = 0.006 ns (0.03%), N = 15, StdDev = 0.022 ns

Min = 20.928 ns, Q1 = 20.943 ns, Median = 20.953 ns, Q3 = 20.977 ns, Max = 20.995 ns

IQR = 0.034 ns, LowerFence = 20.892 ns, UpperFence = 21.027 ns

ConfidenceInterval = [20.936 ns; 20.982 ns] (CI 99.9%), Margin = 0.023 ns (0.11% of Mean)

Skewness = 0.35, Kurtosis = 1.63, MValue = 2

-------------------- Histogram --------------------

[20.917 ns ; 21.007 ns) | @@@@@@@@@@@@@@@


MonoModBenchmark50.ILHook50: DefaultJob

Runtime = .NET 9.0.12 (9.0.1225.60609), X64 RyuJIT AVX2; GC = Concurrent Workstation

Mean = 20.974 ns, StdErr = 0.003 ns (0.01%), N = 15, StdDev = 0.012 ns

Min = 20.952 ns, Q1 = 20.967 ns, Median = 20.970 ns, Q3 = 20.982 ns, Max = 20.998 ns

IQR = 0.015 ns, LowerFence = 20.944 ns, UpperFence = 21.004 ns

ConfidenceInterval = [20.961 ns; 20.986 ns] (CI 99.9%), Margin = 0.013 ns (0.06% of Mean)

Skewness = 0.26, Kurtosis = 2.28, MValue = 2

-------------------- Histogram --------------------

[20.946 ns ; 21.004 ns) | @@@@@@@@@@@@@@@


// * Summary *

BenchmarkDotNet v0.14.0, Ubuntu 24.04.3 LTS (Noble Numbat)

AMD EPYC 7763, 1 CPU, 4 logical and 2 physical cores

.NET SDK 10.0.102

[Host] : .NET 9.0.12 (9.0.1225.60609), X64 RyuJIT AVX2

DefaultJob : .NET 9.0.12 (9.0.1225.60609), X64 RyuJIT AVX2

| Method | Mean | Error | StdDev | Median |

|----------- |--------------:|----------:|----------:|--------------:|

| Inlining | 0.0000 ns | 0.0002 ns | 0.0002 ns | 0.0000 ns |

| NoInlining | 1.5554 ns | 0.0020 ns | 0.0015 ns | 1.5554 ns |

| OnHook1 | 41.6645 ns | 0.0968 ns | 0.0858 ns | 41.6413 ns |

| OnHook50 | 1,622.5911 ns | 0.7458 ns | 0.6228 ns | 1,622.4291 ns |

| ILHook1 | 20.9589 ns | 0.0231 ns | 0.0216 ns | 20.9526 ns |

| ILHook50 | 20.9737 ns | 0.0128 ns | 0.0119 ns | 20.9701 ns |

// * Warnings *

ZeroMeasurement

MonoModBenchmark50.Inlining: Default -> The method duration is indistinguishable from the empty method duration

// * Hints *

Outliers

MonoModBenchmark50.Inlining: Default -> 1 outlier was removed (1.69 ns)

MonoModBenchmark50.NoInlining: Default -> 3 outliers were removed (3.24 ns..3.24 ns)

MonoModBenchmark50.OnHook1: Default -> 1 outlier was removed (43.74 ns)

MonoModBenchmark50.OnHook50: Default -> 2 outliers were removed (1.63 μs, 1.63 μs)

// * Legends *

Mean : Arithmetic mean of all measurements

Error : Half of 99.9% confidence interval

StdDev : Standard deviation of all measurements

Median : Value separating the higher half of all measurements (50th percentile)

1 ns : 1 Nanosecond (0.000000001 sec)

Clone this wiki locally