-
Notifications
You must be signed in to change notification settings - Fork 0
MonoModBenchmark
ba6e98a31156c55a15e07b74fbced8d0b5ea0222
All of these methods have 7 int parameters.
Inlining is not marked as NoInlining,
the rests are marked as NoInlining.
Hook0 is hooked by a hook that don't call orig.
CORRECTION: it doesn't even accept orig. MonoMod has optimization for this case.
CORRECTION: the said optimization is failed.
ILHook is ilhooked.
Hooked is hooked previously. It's not hooked when benchmarking.
BenchmarkDotNet v0.14.0, Ubuntu 24.04.2 LTS (Noble Numbat)
AMD EPYC 7763, 1 CPU, 2 logical cores and 1 physical core
.NET SDK 9.0.200
[Host] : .NET 9.0.2 (9.0.225.6610), X64 RyuJIT AVX2
DefaultJob : .NET 9.0.2 (9.0.225.6610), X64 RyuJIT AVX2
| Method | Mean | Error | StdDev |
|---|---|---|---|
| Inlining | 0.0000 ns | 0.0000 ns | 0.0000 ns |
| NoInlining | 1.5588 ns | 0.0048 ns | 0.0037 ns |
| Hook0 | 32.0430 ns | 0.0341 ns | 0.0285 ns |
| ILHook | 21.0069 ns | 0.0268 ns | 0.0238 ns |
| Hooked | 1.5553 ns | 0.0053 ns | 0.0044 ns |
// * Detailed results *
MonoModBenchmark.Inlining: DefaultJob
Runtime = .NET 9.0.2 (9.0.225.6610), X64 RyuJIT AVX2; GC = Concurrent Workstation
Mean = 0.000 ns, StdErr = 0.000 ns (NaN%), N = 15, StdDev = 0.000 ns
Min = 0.000 ns, Q1 = 0.000 ns, Median = 0.000 ns, Q3 = 0.000 ns, Max = 0.000 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 (NaN% of Mean)
Skewness = NaN, Kurtosis = NaN, MValue = 2
-------------------- Histogram --------------------
[-0.500 ns ; 0.500 ns) | @@@@@@@@@@@@@@@
MonoModBenchmark.NoInlining: DefaultJob
Runtime = .NET 9.0.2 (9.0.225.6610), X64 RyuJIT AVX2; GC = Concurrent Workstation
Mean = 1.559 ns, StdErr = 0.001 ns (0.07%), N = 12, StdDev = 0.004 ns
Min = 1.552 ns, Q1 = 1.557 ns, Median = 1.559 ns, Q3 = 1.561 ns, Max = 1.564 ns
IQR = 0.004 ns, LowerFence = 1.551 ns, UpperFence = 1.568 ns
ConfidenceInterval = [1.554 ns; 1.564 ns] (CI 99.9%), Margin = 0.005 ns (0.31% of Mean)
Skewness = -0.34, Kurtosis = 1.88, MValue = 2
-------------------- Histogram --------------------
[1.550 ns ; 1.566 ns) | @@@@@@@@@@@@
MonoModBenchmark.Hook0: DefaultJob
Runtime = .NET 9.0.2 (9.0.225.6610), X64 RyuJIT AVX2; GC = Concurrent Workstation
Mean = 32.043 ns, StdErr = 0.008 ns (0.02%), N = 13, StdDev = 0.028 ns
Min = 31.996 ns, Q1 = 32.026 ns, Median = 32.040 ns, Q3 = 32.054 ns, Max = 32.102 ns
IQR = 0.028 ns, LowerFence = 31.985 ns, UpperFence = 32.096 ns
ConfidenceInterval = [32.009 ns; 32.077 ns] (CI 99.9%), Margin = 0.034 ns (0.11% of Mean)
Skewness = 0.44, Kurtosis = 2.45, MValue = 2
-------------------- Histogram --------------------
[31.980 ns ; 32.118 ns) | @@@@@@@@@@@@@
MonoModBenchmark.ILHook: DefaultJob
Runtime = .NET 9.0.2 (9.0.225.6610), X64 RyuJIT AVX2; GC = Concurrent Workstation
Mean = 21.007 ns, StdErr = 0.006 ns (0.03%), N = 14, StdDev = 0.024 ns
Min = 20.974 ns, Q1 = 20.988 ns, Median = 21.003 ns, Q3 = 21.023 ns, Max = 21.048 ns
IQR = 0.035 ns, LowerFence = 20.935 ns, UpperFence = 21.076 ns
ConfidenceInterval = [20.980 ns; 21.034 ns] (CI 99.9%), Margin = 0.027 ns (0.13% of Mean)
Skewness = 0.28, Kurtosis = 1.74, MValue = 2
-------------------- Histogram --------------------
[20.961 ns ; 21.061 ns) | @@@@@@@@@@@@@@
MonoModBenchmark.Hooked: DefaultJob
Runtime = .NET 9.0.2 (9.0.225.6610), X64 RyuJIT AVX2; GC = Concurrent Workstation
Mean = 1.555 ns, StdErr = 0.001 ns (0.08%), N = 13, StdDev = 0.004 ns
Min = 1.546 ns, Q1 = 1.554 ns, Median = 1.556 ns, Q3 = 1.557 ns, Max = 1.562 ns
IQR = 0.003 ns, LowerFence = 1.550 ns, UpperFence = 1.562 ns
ConfidenceInterval = [1.550 ns; 1.561 ns] (CI 99.9%), Margin = 0.005 ns (0.34% of Mean)
Skewness = -0.3, Kurtosis = 2.69, MValue = 2
-------------------- Histogram --------------------
[1.544 ns ; 1.565 ns) | @@@@@@@@@@@@@
// * Summary *
BenchmarkDotNet v0.14.0, Ubuntu 24.04.2 LTS (Noble Numbat)
AMD EPYC 7763, 1 CPU, 2 logical cores and 1 physical core
.NET SDK 9.0.200
[Host] : .NET 9.0.2 (9.0.225.6610), X64 RyuJIT AVX2
DefaultJob : .NET 9.0.2 (9.0.225.6610), X64 RyuJIT AVX2
| Method | Mean | Error | StdDev |
|----------- |-----------:|----------:|----------:|
| Inlining | 0.0000 ns | 0.0000 ns | 0.0000 ns |
| NoInlining | 1.5588 ns | 0.0048 ns | 0.0037 ns |
| Hook0 | 32.0430 ns | 0.0341 ns | 0.0285 ns |
| ILHook | 21.0069 ns | 0.0268 ns | 0.0238 ns |
| Hooked | 1.5553 ns | 0.0053 ns | 0.0044 ns |
// * Warnings *
ZeroMeasurement
MonoModBenchmark.Inlining: Default -> The method duration is indistinguishable from the empty method duration
// * Hints *
Outliers
MonoModBenchmark.NoInlining: Default -> 3 outliers were removed (3.26 ns..3.40 ns)
MonoModBenchmark.Hook0: Default -> 2 outliers were removed (34.29 ns, 34.65 ns)
MonoModBenchmark.ILHook: Default -> 1 outlier was removed (22.99 ns)
MonoModBenchmark.Hooked: Default -> 2 outliers were removed, 3 outliers were detected (3.23 ns, 3.25 ns, 3.38 ns)
// * Legends *
Mean : Arithmetic mean of all measurements
Error : Half of 99.9% confidence interval
StdDev : Standard deviation of all measurements
1 ns : 1 Nanosecond (0.000000001 sec)