Skip to content

MonoModEmitReference

wuke32767 edited this page Mar 7, 2025 · 7 revisions

All methods are ilhooked.

ILHook of Standard / StandardO do nothing.

ILHook of EmitIntReference / EmitObjReference replace the return value with a EmitReference.


BenchmarkDotNet v0.14.0, Ubuntu 24.04.2 LTS (Noble Numbat)
AMD EPYC 7763, 1 CPU, 4 logical and 2 physical cores
.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
Standard 26.77 ns 0.013 ns 0.011 ns
StandardO 28.63 ns 0.105 ns 0.099 ns
EmitIntReference 37.35 ns 0.054 ns 0.048 ns
EmitObjReference 34.86 ns 0.023 ns 0.021 ns

// * Detailed results *

MonoModEmitReference.Standard: DefaultJob

Runtime = .NET 9.0.2 (9.0.225.6610), X64 RyuJIT AVX2; GC = Concurrent Workstation

Mean = 26.772 ns, StdErr = 0.003 ns (0.01%), N = 14, StdDev = 0.011 ns

Min = 26.748 ns, Q1 = 26.766 ns, Median = 26.775 ns, Q3 = 26.780 ns, Max = 26.785 ns

IQR = 0.014 ns, LowerFence = 26.745 ns, UpperFence = 26.801 ns

ConfidenceInterval = [26.759 ns; 26.785 ns] (CI 99.9%), Margin = 0.013 ns (0.05% of Mean)

Skewness = -0.66, Kurtosis = 2.14, MValue = 2

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

[26.741 ns ; 26.792 ns) | @@@@@@@@@@@@@@


MonoModEmitReference.StandardO: DefaultJob

Runtime = .NET 9.0.2 (9.0.225.6610), X64 RyuJIT AVX2; GC = Concurrent Workstation

Mean = 28.626 ns, StdErr = 0.025 ns (0.09%), N = 15, StdDev = 0.099 ns

Min = 28.444 ns, Q1 = 28.557 ns, Median = 28.640 ns, Q3 = 28.695 ns, Max = 28.805 ns

IQR = 0.138 ns, LowerFence = 28.350 ns, UpperFence = 28.902 ns

ConfidenceInterval = [28.520 ns; 28.731 ns] (CI 99.9%), Margin = 0.105 ns (0.37% of Mean)

Skewness = -0.04, Kurtosis = 1.96, MValue = 2

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

[28.392 ns ; 28.858 ns) | @@@@@@@@@@@@@@@


MonoModEmitReference.EmitIntReference: DefaultJob

Runtime = .NET 9.0.2 (9.0.225.6610), X64 RyuJIT AVX2; GC = Concurrent Workstation

Mean = 37.346 ns, StdErr = 0.013 ns (0.03%), N = 14, StdDev = 0.048 ns

Min = 37.275 ns, Q1 = 37.312 ns, Median = 37.332 ns, Q3 = 37.378 ns, Max = 37.439 ns

IQR = 0.066 ns, LowerFence = 37.212 ns, UpperFence = 37.478 ns

ConfidenceInterval = [37.291 ns; 37.400 ns] (CI 99.9%), Margin = 0.054 ns (0.15% of Mean)

Skewness = 0.29, Kurtosis = 1.83, MValue = 2

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

[37.249 ns ; 37.466 ns) | @@@@@@@@@@@@@@


MonoModEmitReference.EmitObjReference: DefaultJob

Runtime = .NET 9.0.2 (9.0.225.6610), X64 RyuJIT AVX2; GC = Concurrent Workstation

Mean = 34.859 ns, StdErr = 0.005 ns (0.02%), N = 15, StdDev = 0.021 ns

Min = 34.831 ns, Q1 = 34.843 ns, Median = 34.859 ns, Q3 = 34.872 ns, Max = 34.895 ns

IQR = 0.030 ns, LowerFence = 34.798 ns, UpperFence = 34.917 ns

ConfidenceInterval = [34.837 ns; 34.882 ns] (CI 99.9%), Margin = 0.023 ns (0.07% of Mean)

Skewness = 0.38, Kurtosis = 1.72, MValue = 2

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

[34.819 ns ; 34.906 ns) | @@@@@@@@@@@@@@@


// * Summary *

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

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

.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 |

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

| Standard | 26.77 ns | 0.013 ns | 0.011 ns |

| StandardO | 28.63 ns | 0.105 ns | 0.099 ns |

| EmitIntReference | 37.35 ns | 0.054 ns | 0.048 ns |

| EmitObjReference | 34.86 ns | 0.023 ns | 0.021 ns |

// * Hints *

Outliers

MonoModEmitReference.Standard: Default -> 1 outlier was removed (28.49 ns)

MonoModEmitReference.EmitIntReference: Default -> 1 outlier was removed (39.40 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)

Clone this wiki locally