-
Notifications
You must be signed in to change notification settings - Fork 0
Hate
b0f6a328faec939e43d4f9f3ab960a66670c2e13
Test the performance of ComponentList.
CWT postfix means it's implemented with conditional weak table.
List postfix means it's implemented with entity list.
Hell postfix means there's many data.
NeverHashed means the key is not in cwt and not assigned a hash.
Prefix means it checks which type.
A is root type.
type B and C is in collection, and directly inherit A.
type D is in collection, and inherits _D which inherits A.
type E and F is not in collection.
E is assigned a hash.
Obviously is index into array directly.
BenchmarkDotNet v0.14.0, Ubuntu 24.04.4 LTS (Noble Numbat)
Intel Xeon Platinum 8370C CPU 2.80GHz, 1 CPU, 4 logical and 2 physical cores
.NET SDK 10.0.302
[Host] : .NET 9.0.18 (9.0.1826.31522), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
DefaultJob : .NET 9.0.18 (9.0.1826.31522), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
| Method | Mean | Error | StdDev |
|---|---|---|---|
| Padding | 0.0005 ns | 0.0005 ns | 0.0004 ns |
| B_CWT | 8.4611 ns | 0.0247 ns | 0.0231 ns |
| C_CWT | 8.1916 ns | 0.0166 ns | 0.0139 ns |
| E_CWT | 3.2222 ns | 0.0053 ns | 0.0047 ns |
| F_CWT_NeverHashed | 2.8690 ns | 0.0312 ns | 0.0292 ns |
| B_CWTHell | 8.7358 ns | 0.0263 ns | 0.0234 ns |
| C_CWTHell | 7.2558 ns | 0.0156 ns | 0.0146 ns |
| E_CWTHell | 3.2270 ns | 0.0094 ns | 0.0088 ns |
| F_CWTHell_NeverHashed | 3.2148 ns | 0.0141 ns | 0.0125 ns |
| Fa_CWTHell | 12.3452 ns | 0.1722 ns | 0.1611 ns |
| B_List | 2.6121 ns | 0.0148 ns | 0.0131 ns |
| D_List | 11.0186 ns | 0.0397 ns | 0.0371 ns |
| E_List | 10.7810 ns | 0.0537 ns | 0.0502 ns |
| C_ListHell | 5.7986 ns | 0.0091 ns | 0.0085 ns |
| E_ListHell (in the middle of the collection) | 64.6326 ns | 0.0228 ns | 0.0202 ns |
| F_ListHell | 106.4285 ns | 0.1768 ns | 0.1654 ns |
| Obviously | 1.0035 ns | 0.0132 ns | 0.0124 ns |
// * Detailed results *
Hate.Padding: DefaultJob
Runtime = .NET 9.0.18 (9.0.1826.31522), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI; GC = Concurrent Workstation
Mean = 0.000 ns, StdErr = 0.000 ns (22.76%), N = 15, StdDev = 0.000 ns
Min = 0.000 ns, Q1 = 0.000 ns, Median = 0.001 ns, Q3 = 0.001 ns, Max = 0.001 ns
IQR = 0.001 ns, LowerFence = -0.001 ns, UpperFence = 0.002 ns
ConfidenceInterval = [0.000 ns; 0.001 ns] (CI 99.9%), Margin = 0.000 ns (94.22% of Mean)
Skewness = 0.16, Kurtosis = 1.58, MValue = 2
-------------------- Histogram --------------------
[-0.000 ns ; 0.000 ns) | @@@@@@
[ 0.000 ns ; 0.001 ns) | @@@@@@@
[ 0.001 ns ; 0.001 ns) | @@
Hate.B_CWT: DefaultJob
Runtime = .NET 9.0.18 (9.0.1826.31522), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI; GC = Concurrent Workstation
Mean = 8.461 ns, StdErr = 0.006 ns (0.07%), N = 15, StdDev = 0.023 ns
Min = 8.413 ns, Q1 = 8.449 ns, Median = 8.454 ns, Q3 = 8.475 ns, Max = 8.498 ns
IQR = 0.026 ns, LowerFence = 8.410 ns, UpperFence = 8.514 ns
ConfidenceInterval = [8.436 ns; 8.486 ns] (CI 99.9%), Margin = 0.025 ns (0.29% of Mean)
Skewness = 0.06, Kurtosis = 2.42, MValue = 2
-------------------- Histogram --------------------
[8.400 ns ; 8.510 ns) | @@@@@@@@@@@@@@@
Hate.C_CWT: DefaultJob
Runtime = .NET 9.0.18 (9.0.1826.31522), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI; GC = Concurrent Workstation
Mean = 8.192 ns, StdErr = 0.004 ns (0.05%), N = 13, StdDev = 0.014 ns
Min = 8.164 ns, Q1 = 8.184 ns, Median = 8.196 ns, Q3 = 8.197 ns, Max = 8.221 ns
IQR = 0.014 ns, LowerFence = 8.163 ns, UpperFence = 8.218 ns
ConfidenceInterval = [8.175 ns; 8.208 ns] (CI 99.9%), Margin = 0.017 ns (0.20% of Mean)
Skewness = 0.12, Kurtosis = 2.92, MValue = 2
-------------------- Histogram --------------------
[8.156 ns ; 8.229 ns) | @@@@@@@@@@@@@
Hate.E_CWT: DefaultJob
Runtime = .NET 9.0.18 (9.0.1826.31522), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI; GC = Concurrent Workstation
Mean = 3.222 ns, StdErr = 0.001 ns (0.04%), N = 14, StdDev = 0.005 ns
Min = 3.217 ns, Q1 = 3.218 ns, Median = 3.222 ns, Q3 = 3.224 ns, Max = 3.233 ns
IQR = 0.006 ns, LowerFence = 3.210 ns, UpperFence = 3.233 ns
ConfidenceInterval = [3.217 ns; 3.228 ns] (CI 99.9%), Margin = 0.005 ns (0.16% of Mean)
Skewness = 0.82, Kurtosis = 2.7, MValue = 2
-------------------- Histogram --------------------
[3.214 ns ; 3.236 ns) | @@@@@@@@@@@@@@
Hate.F_CWT_NeverHashed: DefaultJob
Runtime = .NET 9.0.18 (9.0.1826.31522), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI; GC = Concurrent Workstation
Mean = 2.869 ns, StdErr = 0.008 ns (0.26%), N = 15, StdDev = 0.029 ns
Min = 2.784 ns, Q1 = 2.862 ns, Median = 2.872 ns, Q3 = 2.883 ns, Max = 2.904 ns
IQR = 0.021 ns, LowerFence = 2.829 ns, UpperFence = 2.915 ns
ConfidenceInterval = [2.838 ns; 2.900 ns] (CI 99.9%), Margin = 0.031 ns (1.09% of Mean)
Skewness = -1.47, Kurtosis = 5.17, MValue = 2
-------------------- Histogram --------------------
[2.768 ns ; 2.842 ns) | @
[2.842 ns ; 2.920 ns) | @@@@@@@@@@@@@@
Hate.B_CWTHell: DefaultJob
Runtime = .NET 9.0.18 (9.0.1826.31522), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI; GC = Concurrent Workstation
Mean = 8.736 ns, StdErr = 0.006 ns (0.07%), N = 14, StdDev = 0.023 ns
Min = 8.715 ns, Q1 = 8.718 ns, Median = 8.725 ns, Q3 = 8.742 ns, Max = 8.787 ns
IQR = 0.024 ns, LowerFence = 8.682 ns, UpperFence = 8.778 ns
ConfidenceInterval = [8.709 ns; 8.762 ns] (CI 99.9%), Margin = 0.026 ns (0.30% of Mean)
Skewness = 0.95, Kurtosis = 2.42, MValue = 2
-------------------- Histogram --------------------
[8.703 ns ; 8.800 ns) | @@@@@@@@@@@@@@
Hate.C_CWTHell: DefaultJob
Runtime = .NET 9.0.18 (9.0.1826.31522), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI; GC = Concurrent Workstation
Mean = 7.256 ns, StdErr = 0.004 ns (0.05%), N = 15, StdDev = 0.015 ns
Min = 7.230 ns, Q1 = 7.246 ns, Median = 7.257 ns, Q3 = 7.265 ns, Max = 7.285 ns
IQR = 0.019 ns, LowerFence = 7.217 ns, UpperFence = 7.294 ns
ConfidenceInterval = [7.240 ns; 7.271 ns] (CI 99.9%), Margin = 0.016 ns (0.22% of Mean)
Skewness = 0.06, Kurtosis = 2.16, MValue = 2
-------------------- Histogram --------------------
[7.222 ns ; 7.293 ns) | @@@@@@@@@@@@@@@
Hate.E_CWTHell: DefaultJob
Runtime = .NET 9.0.18 (9.0.1826.31522), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI; GC = Concurrent Workstation
Mean = 3.227 ns, StdErr = 0.002 ns (0.07%), N = 15, StdDev = 0.009 ns
Min = 3.217 ns, Q1 = 3.220 ns, Median = 3.225 ns, Q3 = 3.232 ns, Max = 3.245 ns
IQR = 0.012 ns, LowerFence = 3.202 ns, UpperFence = 3.249 ns
ConfidenceInterval = [3.218 ns; 3.236 ns] (CI 99.9%), Margin = 0.009 ns (0.29% of Mean)
Skewness = 0.65, Kurtosis = 2.03, MValue = 2
-------------------- Histogram --------------------
[3.212 ns ; 3.249 ns) | @@@@@@@@@@@@@@@
Hate.F_CWTHell_NeverHashed: DefaultJob
Runtime = .NET 9.0.18 (9.0.1826.31522), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI; GC = Concurrent Workstation
Mean = 3.215 ns, StdErr = 0.003 ns (0.10%), N = 14, StdDev = 0.012 ns
Min = 3.200 ns, Q1 = 3.209 ns, Median = 3.212 ns, Q3 = 3.216 ns, Max = 3.243 ns
IQR = 0.007 ns, LowerFence = 3.198 ns, UpperFence = 3.226 ns
ConfidenceInterval = [3.201 ns; 3.229 ns] (CI 99.9%), Margin = 0.014 ns (0.44% of Mean)
Skewness = 0.93, Kurtosis = 2.75, MValue = 2
-------------------- Histogram --------------------
[3.194 ns ; 3.250 ns) | @@@@@@@@@@@@@@
Hate.Fa_CWTHell: DefaultJob
Runtime = .NET 9.0.18 (9.0.1826.31522), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI; GC = Concurrent Workstation
Mean = 12.345 ns, StdErr = 0.042 ns (0.34%), N = 15, StdDev = 0.161 ns
Min = 12.169 ns, Q1 = 12.194 ns, Median = 12.316 ns, Q3 = 12.526 ns, Max = 12.566 ns
IQR = 0.331 ns, LowerFence = 11.697 ns, UpperFence = 13.023 ns
ConfidenceInterval = [12.173 ns; 12.517 ns] (CI 99.9%), Margin = 0.172 ns (1.39% of Mean)
Skewness = 0.19, Kurtosis = 1.12, MValue = 2
-------------------- Histogram --------------------
[12.120 ns ; 12.628 ns) | @@@@@@@@@@@@@@@
Hate.B_List: DefaultJob
Runtime = .NET 9.0.18 (9.0.1826.31522), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI; GC = Concurrent Workstation
Mean = 2.612 ns, StdErr = 0.003 ns (0.13%), N = 14, StdDev = 0.013 ns
Min = 2.598 ns, Q1 = 2.603 ns, Median = 2.606 ns, Q3 = 2.617 ns, Max = 2.639 ns
IQR = 0.013 ns, LowerFence = 2.583 ns, UpperFence = 2.637 ns
ConfidenceInterval = [2.597 ns; 2.627 ns] (CI 99.9%), Margin = 0.015 ns (0.57% of Mean)
Skewness = 0.93, Kurtosis = 2.28, MValue = 2
-------------------- Histogram --------------------
[2.591 ns ; 2.646 ns) | @@@@@@@@@@@@@@
Hate.D_List: DefaultJob
Runtime = .NET 9.0.18 (9.0.1826.31522), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI; GC = Concurrent Workstation
Mean = 11.019 ns, StdErr = 0.010 ns (0.09%), N = 15, StdDev = 0.037 ns
Min = 10.966 ns, Q1 = 10.985 ns, Median = 11.016 ns, Q3 = 11.046 ns, Max = 11.096 ns
IQR = 0.061 ns, LowerFence = 10.894 ns, UpperFence = 11.137 ns
ConfidenceInterval = [10.979 ns; 11.058 ns] (CI 99.9%), Margin = 0.040 ns (0.36% of Mean)
Skewness = 0.28, Kurtosis = 2, MValue = 2
-------------------- Histogram --------------------
[10.946 ns ; 11.116 ns) | @@@@@@@@@@@@@@@
Hate.E_List: DefaultJob
Runtime = .NET 9.0.18 (9.0.1826.31522), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI; GC = Concurrent Workstation
Mean = 10.781 ns, StdErr = 0.013 ns (0.12%), N = 15, StdDev = 0.050 ns
Min = 10.700 ns, Q1 = 10.736 ns, Median = 10.780 ns, Q3 = 10.825 ns, Max = 10.845 ns
IQR = 0.089 ns, LowerFence = 10.603 ns, UpperFence = 10.958 ns
ConfidenceInterval = [10.727 ns; 10.835 ns] (CI 99.9%), Margin = 0.054 ns (0.50% of Mean)
Skewness = -0.12, Kurtosis = 1.3, MValue = 2
-------------------- Histogram --------------------
[10.673 ns ; 10.872 ns) | @@@@@@@@@@@@@@@
Hate.C_ListHell: DefaultJob
Runtime = .NET 9.0.18 (9.0.1826.31522), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI; GC = Concurrent Workstation
Mean = 5.799 ns, StdErr = 0.002 ns (0.04%), N = 15, StdDev = 0.008 ns
Min = 5.785 ns, Q1 = 5.792 ns, Median = 5.800 ns, Q3 = 5.806 ns, Max = 5.812 ns
IQR = 0.014 ns, LowerFence = 5.771 ns, UpperFence = 5.828 ns
ConfidenceInterval = [5.789 ns; 5.808 ns] (CI 99.9%), Margin = 0.009 ns (0.16% of Mean)
Skewness = -0.16, Kurtosis = 1.68, MValue = 2
-------------------- Histogram --------------------
[5.780 ns ; 5.817 ns) | @@@@@@@@@@@@@@@
Hate.E_ListHell: DefaultJob
Runtime = .NET 9.0.18 (9.0.1826.31522), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI; GC = Concurrent Workstation
Mean = 64.633 ns, StdErr = 0.005 ns (0.01%), N = 14, StdDev = 0.020 ns
Min = 64.592 ns, Q1 = 64.627 ns, Median = 64.634 ns, Q3 = 64.644 ns, Max = 64.671 ns
IQR = 0.017 ns, LowerFence = 64.602 ns, UpperFence = 64.670 ns
ConfidenceInterval = [64.610 ns; 64.655 ns] (CI 99.9%), Margin = 0.023 ns (0.04% of Mean)
Skewness = -0.29, Kurtosis = 2.57, MValue = 2
-------------------- Histogram --------------------
[64.581 ns ; 64.683 ns) | @@@@@@@@@@@@@@
Hate.F_ListHell: DefaultJob
Runtime = .NET 9.0.18 (9.0.1826.31522), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI; GC = Concurrent Workstation
Mean = 106.428 ns, StdErr = 0.043 ns (0.04%), N = 15, StdDev = 0.165 ns
Min = 106.208 ns, Q1 = 106.322 ns, Median = 106.401 ns, Q3 = 106.529 ns, Max = 106.800 ns
IQR = 0.207 ns, LowerFence = 106.012 ns, UpperFence = 106.839 ns
ConfidenceInterval = [106.252 ns; 106.605 ns] (CI 99.9%), Margin = 0.177 ns (0.17% of Mean)
Skewness = 0.58, Kurtosis = 2.46, MValue = 2
-------------------- Histogram --------------------
[106.120 ns ; 106.888 ns) | @@@@@@@@@@@@@@@
Hate.Obviously: DefaultJob
Runtime = .NET 9.0.18 (9.0.1826.31522), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI; GC = Concurrent Workstation
Mean = 1.004 ns, StdErr = 0.003 ns (0.32%), N = 15, StdDev = 0.012 ns
Min = 0.983 ns, Q1 = 0.995 ns, Median = 1.004 ns, Q3 = 1.012 ns, Max = 1.024 ns
IQR = 0.017 ns, LowerFence = 0.970 ns, UpperFence = 1.037 ns
ConfidenceInterval = [0.990 ns; 1.017 ns] (CI 99.9%), Margin = 0.013 ns (1.32% of Mean)
Skewness = 0.08, Kurtosis = 1.81, MValue = 2
-------------------- Histogram --------------------
[0.976 ns ; 1.027 ns) | @@@@@@@@@@@@@@@
// * Summary *
BenchmarkDotNet v0.14.0, Ubuntu 24.04.4 LTS (Noble Numbat)
Intel Xeon Platinum 8370C CPU 2.80GHz, 1 CPU, 4 logical and 2 physical cores
.NET SDK 10.0.302
[Host] : .NET 9.0.18 (9.0.1826.31522), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
DefaultJob : .NET 9.0.18 (9.0.1826.31522), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
| Method | Mean | Error | StdDev |
|---------------------- |------------:|----------:|----------:|
| Padding | 0.0005 ns | 0.0005 ns | 0.0004 ns |
| B_CWT | 8.4611 ns | 0.0247 ns | 0.0231 ns |
| C_CWT | 8.1916 ns | 0.0166 ns | 0.0139 ns |
| E_CWT | 3.2222 ns | 0.0053 ns | 0.0047 ns |
| F_CWT_NeverHashed | 2.8690 ns | 0.0312 ns | 0.0292 ns |
| B_CWTHell | 8.7358 ns | 0.0263 ns | 0.0234 ns |
| C_CWTHell | 7.2558 ns | 0.0156 ns | 0.0146 ns |
| E_CWTHell | 3.2270 ns | 0.0094 ns | 0.0088 ns |
| F_CWTHell_NeverHashed | 3.2148 ns | 0.0141 ns | 0.0125 ns |
| Fa_CWTHell | 12.3452 ns | 0.1722 ns | 0.1611 ns |
| B_List | 2.6121 ns | 0.0148 ns | 0.0131 ns |
| D_List | 11.0186 ns | 0.0397 ns | 0.0371 ns |
| E_List | 10.7810 ns | 0.0537 ns | 0.0502 ns |
| C_ListHell | 5.7986 ns | 0.0091 ns | 0.0085 ns |
| E_ListHell | 64.6326 ns | 0.0228 ns | 0.0202 ns |
| F_ListHell | 106.4285 ns | 0.1768 ns | 0.1654 ns |
| Obviously | 1.0035 ns | 0.0132 ns | 0.0124 ns |
// * Warnings *
ZeroMeasurement
Hate.Padding: Default -> The method duration is indistinguishable from the empty method duration
// * Hints *
Outliers
Hate.C_CWT: Default -> 2 outliers were removed (12.59 ns, 12.65 ns)
Hate.E_CWT: Default -> 1 outlier was removed (7.59 ns)
Hate.F_CWT_NeverHashed: Default -> 1 outlier was detected (7.14 ns)
Hate.B_CWTHell: Default -> 1 outlier was removed (13.20 ns)
Hate.F_CWTHell_NeverHashed: Default -> 1 outlier was removed (7.64 ns)
Hate.B_List: Default -> 1 outlier was removed (7.07 ns)
Hate.E_ListHell: Default -> 1 outlier was removed, 2 outliers were detected (68.97 ns, 69.74 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)
// ***** BenchmarkRunner: End *****
Run time: 00:07:07 (427.68 sec), executed benchmarks: 17
Global total time: 00:07:13 (433.88 sec), executed benchmarks: 17
// * Artifacts cleanup *
Artifacts cleanup is finished