-
Notifications
You must be signed in to change notification settings - Fork 0
TrustJIT
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)