-
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?
sometimes the first benchmark may be faster or slower, i added two empty benchmark.
All methods have 7 parameters and static.
the methods without Simulate prefix is hooked. all the hooks do nothing.
Simulate* is not hooked, but will be 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.3052 ns | 0.0378 ns | 0.0335 ns | 0.3077 ns |
| Padding2 | 0.0017 ns | 0.0029 ns | 0.0027 ns | 0.0000 ns |
| Instanced | 37.4733 ns | 0.0644 ns | 0.0602 ns | 37.4650 ns |
| Static | 36.9501 ns | 0.0478 ns | 0.0424 ns | 36.9401 ns |
| Aggressive | 37.4846 ns | 0.0294 ns | 0.0229 ns | 37.4875 ns |
| Simulate | 1.5572 ns | 0.0054 ns | 0.0048 ns | 1.5546 ns |
| SimulateAggressive | 1.5558 ns | 0.0036 ns | 0.0030 ns | 1.5540 ns |
| SimulateStatic | 1.5551 ns | 0.0047 ns | 0.0041 ns | 1.5532 ns |
| SimulateNo | 3.1097 ns | 0.0058 ns | 0.0051 ns | 3.1080 ns |
// * Detailed results *
TrustJIT.Padding: DefaultJob
Runtime = .NET 9.0.3 (9.0.325.11113), X64 RyuJIT AVX2; GC = Concurrent Workstation
Mean = 0.305 ns, StdErr = 0.009 ns (2.93%), N = 14, StdDev = 0.033 ns
Min = 0.232 ns, Q1 = 0.288 ns, Median = 0.308 ns, Q3 = 0.320 ns, Max = 0.372 ns
IQR = 0.032 ns, LowerFence = 0.240 ns, UpperFence = 0.367 ns
ConfidenceInterval = [0.267 ns; 0.343 ns] (CI 99.9%), Margin = 0.038 ns (12.38% of Mean)
Skewness = -0.13, Kurtosis = 3.03, MValue = 2.86
-------------------- Histogram --------------------
[0.213 ns ; 0.250 ns) | @
[0.250 ns ; 0.274 ns) |
[0.274 ns ; 0.310 ns) | @@@@@@@@@
[0.310 ns ; 0.351 ns) | @@@
[0.351 ns ; 0.391 ns) | @
TrustJIT.Padding2: DefaultJob
Runtime = .NET 9.0.3 (9.0.325.11113), X64 RyuJIT AVX2; GC = Concurrent Workstation
Mean = 0.002 ns, StdErr = 0.001 ns (40.46%), N = 15, StdDev = 0.003 ns
Min = 0.000 ns, Q1 = 0.000 ns, Median = 0.000 ns, Q3 = 0.003 ns, Max = 0.007 ns
IQR = 0.003 ns, LowerFence = -0.005 ns, UpperFence = 0.008 ns
ConfidenceInterval = [-0.001 ns; 0.005 ns] (CI 99.9%), Margin = 0.003 ns (167.54% of Mean)
Skewness = 0.98, Kurtosis = 2.02, MValue = 2.73
-------------------- Histogram --------------------
[-0.001 ns ; 0.002 ns) | @@@@@@@@@@@
[ 0.002 ns ; 0.005 ns) |
[ 0.005 ns ; 0.008 ns) | @@@@
TrustJIT.Instanced: DefaultJob
Runtime = .NET 9.0.3 (9.0.325.11113), X64 RyuJIT AVX2; GC = Concurrent Workstation
Mean = 37.473 ns, StdErr = 0.016 ns (0.04%), N = 15, StdDev = 0.060 ns
Min = 37.387 ns, Q1 = 37.423 ns, Median = 37.465 ns, Q3 = 37.502 ns, Max = 37.601 ns
IQR = 0.078 ns, LowerFence = 37.306 ns, UpperFence = 37.619 ns
ConfidenceInterval = [37.409 ns; 37.538 ns] (CI 99.9%), Margin = 0.064 ns (0.17% of Mean)
Skewness = 0.49, Kurtosis = 2.25, MValue = 2
-------------------- Histogram --------------------
[37.354 ns ; 37.633 ns) | @@@@@@@@@@@@@@@
TrustJIT.Static: DefaultJob
Runtime = .NET 9.0.3 (9.0.325.11113), X64 RyuJIT AVX2; GC = Concurrent Workstation
Mean = 36.950 ns, StdErr = 0.011 ns (0.03%), N = 14, StdDev = 0.042 ns
Min = 36.900 ns, Q1 = 36.928 ns, Median = 36.940 ns, Q3 = 36.960 ns, Max = 37.036 ns
IQR = 0.032 ns, LowerFence = 36.881 ns, UpperFence = 37.007 ns
ConfidenceInterval = [36.902 ns; 36.998 ns] (CI 99.9%), Margin = 0.048 ns (0.13% of Mean)
Skewness = 0.79, Kurtosis = 2.39, MValue = 2
-------------------- Histogram --------------------
[36.876 ns ; 37.059 ns) | @@@@@@@@@@@@@@
TrustJIT.Aggressive: DefaultJob
Runtime = .NET 9.0.3 (9.0.325.11113), X64 RyuJIT AVX2; GC = Concurrent Workstation
Mean = 37.485 ns, StdErr = 0.007 ns (0.02%), N = 12, StdDev = 0.023 ns
Min = 37.435 ns, Q1 = 37.471 ns, Median = 37.488 ns, Q3 = 37.499 ns, Max = 37.518 ns
IQR = 0.028 ns, LowerFence = 37.428 ns, UpperFence = 37.542 ns
ConfidenceInterval = [37.455 ns; 37.514 ns] (CI 99.9%), Margin = 0.029 ns (0.08% of Mean)
Skewness = -0.52, Kurtosis = 2.38, MValue = 2
-------------------- Histogram --------------------
[37.422 ns ; 37.531 ns) | @@@@@@@@@@@@
TrustJIT.Simulate: DefaultJob
Runtime = .NET 9.0.3 (9.0.325.11113), X64 RyuJIT AVX2; GC = Concurrent Workstation
Mean = 1.557 ns, StdErr = 0.001 ns (0.08%), N = 14, StdDev = 0.005 ns
Min = 1.553 ns, Q1 = 1.554 ns, Median = 1.555 ns, Q3 = 1.560 ns, Max = 1.567 ns
IQR = 0.007 ns, LowerFence = 1.543 ns, UpperFence = 1.571 ns
ConfidenceInterval = [1.552 ns; 1.563 ns] (CI 99.9%), Margin = 0.005 ns (0.35% of Mean)
Skewness = 0.83, Kurtosis = 2.16, MValue = 2
-------------------- Histogram --------------------
[1.550 ns ; 1.570 ns) | @@@@@@@@@@@@@@
TrustJIT.SimulateAggressive: DefaultJob
Runtime = .NET 9.0.3 (9.0.325.11113), X64 RyuJIT AVX2; GC = Concurrent Workstation
Mean = 1.556 ns, StdErr = 0.001 ns (0.05%), N = 13, StdDev = 0.003 ns
Min = 1.553 ns, Q1 = 1.553 ns, Median = 1.554 ns, Q3 = 1.558 ns, Max = 1.561 ns
IQR = 0.005 ns, LowerFence = 1.546 ns, UpperFence = 1.566 ns
ConfidenceInterval = [1.552 ns; 1.559 ns] (CI 99.9%), Margin = 0.004 ns (0.23% of Mean)
Skewness = 0.63, Kurtosis = 1.52, MValue = 2
-------------------- Histogram --------------------
[1.551 ns ; 1.563 ns) | @@@@@@@@@@@@@
TrustJIT.SimulateStatic: DefaultJob
Runtime = .NET 9.0.3 (9.0.325.11113), X64 RyuJIT AVX2; GC = Concurrent Workstation
Mean = 1.555 ns, StdErr = 0.001 ns (0.07%), N = 14, StdDev = 0.004 ns
Min = 1.552 ns, Q1 = 1.553 ns, Median = 1.553 ns, Q3 = 1.557 ns, Max = 1.566 ns
IQR = 0.005 ns, LowerFence = 1.546 ns, UpperFence = 1.564 ns
ConfidenceInterval = [1.550 ns; 1.560 ns] (CI 99.9%), Margin = 0.005 ns (0.30% of Mean)
Skewness = 1.46, Kurtosis = 4.32, MValue = 2
-------------------- Histogram --------------------
[1.549 ns ; 1.569 ns) | @@@@@@@@@@@@@@
TrustJIT.SimulateNo: DefaultJob
Runtime = .NET 9.0.3 (9.0.325.11113), X64 RyuJIT AVX2; GC = Concurrent Workstation
Mean = 3.110 ns, StdErr = 0.001 ns (0.04%), N = 14, StdDev = 0.005 ns
Min = 3.104 ns, Q1 = 3.106 ns, Median = 3.108 ns, Q3 = 3.111 ns, Max = 3.121 ns
IQR = 0.005 ns, LowerFence = 3.099 ns, UpperFence = 3.118 ns
ConfidenceInterval = [3.104 ns; 3.115 ns] (CI 99.9%), Margin = 0.006 ns (0.19% of Mean)
Skewness = 1.11, Kurtosis = 2.95, MValue = 2
-------------------- Histogram --------------------
[3.101 ns ; 3.124 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.3052 ns | 0.0378 ns | 0.0335 ns | 0.3077 ns |
| Padding2 | 0.0017 ns | 0.0029 ns | 0.0027 ns | 0.0000 ns |
| Instanced | 37.4733 ns | 0.0644 ns | 0.0602 ns | 37.4650 ns |
| Static | 36.9501 ns | 0.0478 ns | 0.0424 ns | 36.9401 ns |
| Aggressive | 37.4846 ns | 0.0294 ns | 0.0229 ns | 37.4875 ns |
| Simulate | 1.5572 ns | 0.0054 ns | 0.0048 ns | 1.5546 ns |
| SimulateAggressive | 1.5558 ns | 0.0036 ns | 0.0030 ns | 1.5540 ns |
| SimulateStatic | 1.5551 ns | 0.0047 ns | 0.0041 ns | 1.5532 ns |
| SimulateNo | 3.1097 ns | 0.0058 ns | 0.0051 ns | 3.1080 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 -> 1 outlier was removed (2.08 ns)
TrustJIT.Static: Default -> 1 outlier was removed (39.12 ns)
TrustJIT.Aggressive: Default -> 3 outliers were removed (39.58 ns..39.71 ns)
TrustJIT.Simulate: Default -> 1 outlier was removed (3.25 ns)
TrustJIT.SimulateAggressive: Default -> 2 outliers were removed (3.24 ns, 3.28 ns)
TrustJIT.SimulateStatic: Default -> 1 outlier was removed (3.24 ns)
TrustJIT.SimulateNo: Default -> 1 outlier was removed (4.79 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)