Commit 2976caf
committed
Refactor subclasses logic for performance
* Split large methods into smaller ones.
* Eliminate repeated null-checking.
* Always use estimate to create array/list, but add fast path to
newArray that reuses zero-length array.
* Add estimates for "all subclasses" and "all descendants" used by
the old form.
* Only update estimates for the target class, not for subclasses.
This refactored impl is consistently faster than 9.4.9.0:
9.4.9.0:
1 thread Numeric.subclasses
1.281k (±10.4%) i/s - 6.348k in 5.015677s
1 thread Object.subclasses
57.555 (± 1.7%) i/s - 290.000 in 5.042078s
5 thread Numeric.subclasses
1.866k (±12.8%) i/s - 9.243k in 5.026434s
5 thread Object.subclasses
156.215 (± 3.8%) i/s - 780.000 in 5.000381s
10 thread Numeric.subclasses
1.151k (±11.8%) i/s - 5.700k in 5.027341s
10 thread Object.subclasses
182.022 (±15.9%) i/s - 864.000 in 5.076040s
50 thread Numeric.subclasses
276.258 (±33.3%) i/s - 1.122k in 5.030777s
50 thread Object.subclasses
149.436 (±16.1%) i/s - 705.000 in 5.005946s
New impl:
1 thread Numeric.subclasses
1.871k (± 9.9%) i/s - 9.313k in 5.028326s
1 thread Object.subclasses
194.344 (± 2.6%) i/s - 988.000 in 5.087741s
5 thread Numeric.subclasses
1.966k (±12.9%) i/s - 9.750k in 5.044797s
5 thread Object.subclasses
475.950 (± 8.4%) i/s - 2.392k in 5.065777s
10 thread Numeric.subclasses
1.170k (±16.9%) i/s - 5.720k in 5.238812s
10 thread Object.subclasses
356.624 (±41.5%) i/s - 1.470k in 5.065979s
50 thread Numeric.subclasses
338.594 (±13.9%) i/s - 1.665k in 5.075536s
50 thread Object.subclasses
251.153 (±10.4%) i/s - 1.250k in 5.025052s1 parent 57d8940 commit 2976caf
2 files changed
+85
-61
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
178 | 178 | | |
179 | 179 | | |
180 | 180 | | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
181 | 185 | | |
182 | 186 | | |
183 | 187 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
111 | 111 | | |
112 | 112 | | |
113 | 113 | | |
| 114 | + | |
114 | 115 | | |
115 | 116 | | |
116 | 117 | | |
| |||
1011 | 1012 | | |
1012 | 1013 | | |
1013 | 1014 | | |
1014 | | - | |
1015 | | - | |
1016 | | - | |
1017 | | - | |
1018 | | - | |
| 1015 | + | |
| 1016 | + | |
| 1017 | + | |
1019 | 1018 | | |
1020 | 1019 | | |
1021 | 1020 | | |
| |||
1052 | 1051 | | |
1053 | 1052 | | |
1054 | 1053 | | |
1055 | | - | |
1056 | | - | |
1057 | | - | |
1058 | | - | |
| 1054 | + | |
| 1055 | + | |
| 1056 | + | |
1059 | 1057 | | |
1060 | | - | |
1061 | | - | |
1062 | | - | |
| 1058 | + | |
1063 | 1059 | | |
1064 | 1060 | | |
1065 | | - | |
1066 | | - | |
1067 | | - | |
1068 | | - | |
1069 | | - | |
1070 | | - | |
1071 | | - | |
1072 | | - | |
1073 | | - | |
1074 | | - | |
1075 | | - | |
1076 | | - | |
| 1061 | + | |
| 1062 | + | |
| 1063 | + | |
| 1064 | + | |
| 1065 | + | |
| 1066 | + | |
| 1067 | + | |
| 1068 | + | |
| 1069 | + | |
1077 | 1070 | | |
1078 | | - | |
| 1071 | + | |
| 1072 | + | |
| 1073 | + | |
| 1074 | + | |
| 1075 | + | |
| 1076 | + | |
1079 | 1077 | | |
1080 | | - | |
| 1078 | + | |
| 1079 | + | |
| 1080 | + | |
1081 | 1081 | | |
1082 | | - | |
1083 | 1082 | | |
1084 | | - | |
1085 | | - | |
1086 | | - | |
1087 | | - | |
| 1083 | + | |
| 1084 | + | |
| 1085 | + | |
| 1086 | + | |
| 1087 | + | |
| 1088 | + | |
| 1089 | + | |
| 1090 | + | |
| 1091 | + | |
| 1092 | + | |
| 1093 | + | |
| 1094 | + | |
| 1095 | + | |
| 1096 | + | |
| 1097 | + | |
| 1098 | + | |
| 1099 | + | |
1088 | 1100 | | |
| 1101 | + | |
1089 | 1102 | | |
1090 | 1103 | | |
1091 | | - | |
| 1104 | + | |
1092 | 1105 | | |
1093 | | - | |
1094 | | - | |
1095 | | - | |
1096 | | - | |
1097 | | - | |
1098 | | - | |
1099 | | - | |
1100 | | - | |
1101 | | - | |
1102 | | - | |
| 1106 | + | |
| 1107 | + | |
| 1108 | + | |
| 1109 | + | |
1103 | 1110 | | |
1104 | | - | |
1105 | | - | |
1106 | | - | |
1107 | | - | |
1108 | | - | |
1109 | | - | |
1110 | | - | |
| 1111 | + | |
| 1112 | + | |
| 1113 | + | |
1111 | 1114 | | |
1112 | | - | |
1113 | | - | |
1114 | 1115 | | |
1115 | | - | |
1116 | | - | |
1117 | | - | |
| 1116 | + | |
| 1117 | + | |
| 1118 | + | |
| 1119 | + | |
| 1120 | + | |
| 1121 | + | |
| 1122 | + | |
| 1123 | + | |
| 1124 | + | |
| 1125 | + | |
| 1126 | + | |
1118 | 1127 | | |
1119 | 1128 | | |
1120 | 1129 | | |
1121 | 1130 | | |
1122 | | - | |
1123 | | - | |
1124 | | - | |
1125 | | - | |
1126 | | - | |
1127 | | - | |
| 1131 | + | |
| 1132 | + | |
| 1133 | + | |
| 1134 | + | |
| 1135 | + | |
| 1136 | + | |
| 1137 | + | |
| 1138 | + | |
| 1139 | + | |
| 1140 | + | |
| 1141 | + | |
| 1142 | + | |
| 1143 | + | |
| 1144 | + | |
| 1145 | + | |
1128 | 1146 | | |
1129 | 1147 | | |
1130 | 1148 | | |
| |||
3158 | 3176 | | |
3159 | 3177 | | |
3160 | 3178 | | |
3161 | | - | |
| 3179 | + | |
| 3180 | + | |
| 3181 | + | |
3162 | 3182 | | |
3163 | 3183 | | |
3164 | 3184 | | |
| |||
0 commit comments