Skip to content

TrustJIT

wuke32767 edited this page Mar 21, 2025 · 7 revisions

This is it, Madeline.

Just trust jit.

Why are you so nervous?

71ac725f001d581a5a045ab4a33e1e1eaf6f0c36

sometimes the first benchmark is slower, so i added two empty benchmark.

All methods have 7 parameters and is static.

the methods without Simulate prefix is hooked. all the hooks do nothing.

Simulate* is not hooked, but is indirectly called to simulate the hook.

Instanced is hooked by instanced hook.

Static is hooked by static hook.

Aggressive is hooked by a instanced and AggressiveInlining hook.

No is hooked by a instanced and NoInlining hook.


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.202
  [Host]     : .NET 9.0.3 (9.0.325.11113), X64 RyuJIT AVX2
  DefaultJob : .NET 9.0.3 (9.0.325.11113), X64 RyuJIT AVX2


Method Mean Error StdDev Median
Padding 0.0022 ns 0.0035 ns 0.0029 ns 0.0006 ns
Padding2 0.0013 ns 0.0024 ns 0.0022 ns 0.0000 ns
Instanced 37.5340 ns 0.0785 ns 0.0734 ns 37.5214 ns
Static 37.2616 ns 0.0581 ns 0.0485 ns 37.2412 ns
Aggressive 37.8273 ns 0.0361 ns 0.0320 ns 37.8241 ns
Simulate 1.5579 ns 0.0065 ns 0.0057 ns 1.5548 ns
SimulateAggressive 1.5589 ns 0.0096 ns 0.0085 ns 1.5542 ns
SimulateStatic 1.5556 ns 0.0083 ns 0.0078 ns 1.5531 ns
SimulateNo 3.1088 ns 0.0039 ns 0.0031 ns 3.1079 ns

// * Detailed results *

TrustJIT.Padding: DefaultJob

Runtime = .NET 9.0.3 (9.0.325.11113), X64 RyuJIT AVX2; GC = Concurrent Workstation

Mean = 0.002 ns, StdErr = 0.001 ns (35.97%), N = 13, StdDev = 0.003 ns

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

IQR = 0.005 ns, LowerFence = -0.007 ns, UpperFence = 0.012 ns

ConfidenceInterval = [-0.001 ns; 0.006 ns] (CI 99.9%), Margin = 0.003 ns (155.33% of Mean)

Skewness = 0.8, Kurtosis = 2.15, MValue = 2

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

[-0.001 ns ; 0.002 ns) | @@@@@@@@

[ 0.002 ns ; 0.006 ns) | @@@@

[ 0.006 ns ; 0.010 ns) | @


TrustJIT.Padding2: DefaultJob

Runtime = .NET 9.0.3 (9.0.325.11113), X64 RyuJIT AVX2; GC = Concurrent Workstation

Mean = 0.001 ns, StdErr = 0.001 ns (43.79%), N = 14, StdDev = 0.002 ns

Min = 0.000 ns, Q1 = 0.000 ns, Median = 0.000 ns, Q3 = 0.002 ns, Max = 0.006 ns

IQR = 0.002 ns, LowerFence = -0.004 ns, UpperFence = 0.006 ns

ConfidenceInterval = [-0.001 ns; 0.004 ns] (CI 99.9%), Margin = 0.002 ns (184.82% of Mean)

Skewness = 1.08, Kurtosis = 2.45, MValue = 2.6

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

[-0.001 ns ; 0.001 ns) | @@@@@@@@@@

[ 0.001 ns ; 0.003 ns) |

[ 0.003 ns ; 0.005 ns) | @@@

[ 0.005 ns ; 0.007 ns) | @


TrustJIT.Instanced: DefaultJob

Runtime = .NET 9.0.3 (9.0.325.11113), X64 RyuJIT AVX2; GC = Concurrent Workstation

Mean = 37.534 ns, StdErr = 0.019 ns (0.05%), N = 15, StdDev = 0.073 ns

Min = 37.399 ns, Q1 = 37.495 ns, Median = 37.521 ns, Q3 = 37.571 ns, Max = 37.671 ns

IQR = 0.075 ns, LowerFence = 37.383 ns, UpperFence = 37.683 ns

ConfidenceInterval = [37.456 ns; 37.613 ns] (CI 99.9%), Margin = 0.078 ns (0.21% of Mean)

Skewness = 0.25, Kurtosis = 2.29, MValue = 2

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

[37.360 ns ; 37.710 ns) | @@@@@@@@@@@@@@@


TrustJIT.Static: DefaultJob

Runtime = .NET 9.0.3 (9.0.325.11113), X64 RyuJIT AVX2; GC = Concurrent Workstation

Mean = 37.262 ns, StdErr = 0.013 ns (0.04%), N = 13, StdDev = 0.049 ns

Min = 37.218 ns, Q1 = 37.228 ns, Median = 37.241 ns, Q3 = 37.264 ns, Max = 37.365 ns

IQR = 0.036 ns, LowerFence = 37.175 ns, UpperFence = 37.318 ns

ConfidenceInterval = [37.203 ns; 37.320 ns] (CI 99.9%), Margin = 0.058 ns (0.16% of Mean)

Skewness = 1.02, Kurtosis = 2.47, MValue = 2

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

[37.191 ns ; 37.392 ns) | @@@@@@@@@@@@@


TrustJIT.Aggressive: DefaultJob

Runtime = .NET 9.0.3 (9.0.325.11113), X64 RyuJIT AVX2; GC = Concurrent Workstation

Mean = 37.827 ns, StdErr = 0.009 ns (0.02%), N = 14, StdDev = 0.032 ns

Min = 37.788 ns, Q1 = 37.806 ns, Median = 37.824 ns, Q3 = 37.831 ns, Max = 37.890 ns

IQR = 0.025 ns, LowerFence = 37.768 ns, UpperFence = 37.868 ns

ConfidenceInterval = [37.791 ns; 37.863 ns] (CI 99.9%), Margin = 0.036 ns (0.10% of Mean)

Skewness = 0.76, Kurtosis = 2.31, MValue = 2

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

[37.771 ns ; 37.907 ns) | @@@@@@@@@@@@@@


TrustJIT.Simulate: DefaultJob

Runtime = .NET 9.0.3 (9.0.325.11113), X64 RyuJIT AVX2; GC = Concurrent Workstation

Mean = 1.558 ns, StdErr = 0.002 ns (0.10%), N = 14, StdDev = 0.006 ns

Min = 1.551 ns, Q1 = 1.554 ns, Median = 1.555 ns, Q3 = 1.564 ns, Max = 1.567 ns

IQR = 0.010 ns, LowerFence = 1.538 ns, UpperFence = 1.579 ns

ConfidenceInterval = [1.551 ns; 1.564 ns] (CI 99.9%), Margin = 0.006 ns (0.42% of Mean)

Skewness = 0.36, Kurtosis = 1.26, MValue = 2

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

[1.548 ns ; 1.570 ns) | @@@@@@@@@@@@@@


TrustJIT.SimulateAggressive: DefaultJob

Runtime = .NET 9.0.3 (9.0.325.11113), X64 RyuJIT AVX2; GC = Concurrent Workstation

Mean = 1.559 ns, StdErr = 0.002 ns (0.15%), N = 14, StdDev = 0.008 ns

Min = 1.552 ns, Q1 = 1.553 ns, Median = 1.554 ns, Q3 = 1.564 ns, Max = 1.578 ns

IQR = 0.011 ns, LowerFence = 1.536 ns, UpperFence = 1.581 ns

ConfidenceInterval = [1.549 ns; 1.568 ns] (CI 99.9%), Margin = 0.010 ns (0.61% of Mean)

Skewness = 1.02, Kurtosis = 2.61, MValue = 2

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

[1.547 ns ; 1.583 ns) | @@@@@@@@@@@@@@


TrustJIT.SimulateStatic: DefaultJob

Runtime = .NET 9.0.3 (9.0.325.11113), X64 RyuJIT AVX2; GC = Concurrent Workstation

Mean = 1.556 ns, StdErr = 0.002 ns (0.13%), N = 15, StdDev = 0.008 ns

Min = 1.547 ns, Q1 = 1.549 ns, Median = 1.553 ns, Q3 = 1.561 ns, Max = 1.572 ns

IQR = 0.012 ns, LowerFence = 1.532 ns, UpperFence = 1.579 ns

ConfidenceInterval = [1.547 ns; 1.564 ns] (CI 99.9%), Margin = 0.008 ns (0.53% of Mean)

Skewness = 0.57, Kurtosis = 1.97, MValue = 2

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

[1.543 ns ; 1.576 ns) | @@@@@@@@@@@@@@@


TrustJIT.SimulateNo: DefaultJob

Runtime = .NET 9.0.3 (9.0.325.11113), X64 RyuJIT AVX2; GC = Concurrent Workstation

Mean = 3.109 ns, StdErr = 0.001 ns (0.03%), N = 12, StdDev = 0.003 ns

Min = 3.106 ns, Q1 = 3.107 ns, Median = 3.108 ns, Q3 = 3.110 ns, Max = 3.116 ns

IQR = 0.003 ns, LowerFence = 3.102 ns, UpperFence = 3.115 ns

ConfidenceInterval = [3.105 ns; 3.113 ns] (CI 99.9%), Margin = 0.004 ns (0.13% of Mean)

Skewness = 1.03, Kurtosis = 3.15, MValue = 2

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

[3.104 ns ; 3.118 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.202

[Host] : .NET 9.0.3 (9.0.325.11113), X64 RyuJIT AVX2

DefaultJob : .NET 9.0.3 (9.0.325.11113), X64 RyuJIT AVX2

| Method | Mean | Error | StdDev | Median |

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

| Padding | 0.0022 ns | 0.0035 ns | 0.0029 ns | 0.0006 ns |

| Padding2 | 0.0013 ns | 0.0024 ns | 0.0022 ns | 0.0000 ns |

| Instanced | 37.5340 ns | 0.0785 ns | 0.0734 ns | 37.5214 ns |

| Static | 37.2616 ns | 0.0581 ns | 0.0485 ns | 37.2412 ns |

| Aggressive | 37.8273 ns | 0.0361 ns | 0.0320 ns | 37.8241 ns |

| Simulate | 1.5579 ns | 0.0065 ns | 0.0057 ns | 1.5548 ns |

| SimulateAggressive | 1.5589 ns | 0.0096 ns | 0.0085 ns | 1.5542 ns |

| SimulateStatic | 1.5556 ns | 0.0083 ns | 0.0078 ns | 1.5531 ns |

| SimulateNo | 3.1088 ns | 0.0039 ns | 0.0031 ns | 3.1079 ns |

// * Warnings *

ZeroMeasurement

TrustJIT.Padding: Default -> The method duration is indistinguishable from the empty method duration

TrustJIT.Padding2: Default -> The method duration is indistinguishable from the empty method duration

// * Hints *

Outliers

TrustJIT.Padding: Default -> 2 outliers were removed (1.73 ns, 1.87 ns)

TrustJIT.Padding2: Default -> 1 outlier was removed (1.68 ns)

TrustJIT.Static: Default -> 2 outliers were removed (42.31 ns, 42.56 ns)

TrustJIT.Aggressive: Default -> 1 outlier was removed (39.59 ns)

TrustJIT.Simulate: Default -> 1 outlier was removed (3.39 ns)

TrustJIT.SimulateAggressive: Default -> 1 outlier was removed (3.29 ns)

TrustJIT.SimulateNo: Default -> 3 outliers were removed (4.80 ns..4.81 ns)

// * 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