RFR: 8339358: Optimize TypeKind#from
Shaojin Wen
swen at openjdk.org
Sun Sep 1 23:34:57 UTC 2024
On Thu, 29 Aug 2024 05:34:37 GMT, Shaojin Wen <swen at openjdk.org> wrote:
> TypeKind.from(Class) is a frequently called method, which provides a specialized method to improve performance.
>
> The following Compiler log shows that the call stack level is reduced and two reference accesses (descriptorString() -> String.value) are reduced, which can reduce the performance degradation caused by cache misses.
>
> * baseline
>
> @ 48 java.lang.classfile.TypeKind::from (25 bytes) inline
> @ 1 java.lang.Class::isPrimitive (0 bytes) intrinsic
> @ 10 java.lang.Class::descriptorString (170 bytes) failed to inline: callee is too large
> @ 15 java.lang.classfile.TypeKind::fromDescriptor (232 bytes) failed to inline: callee is too large
>
>
> * current
>
> @ 52 java.lang.classfile.TypeKind::from (103 bytes) failed to inline: callee is too large
Below are the performance numbers running on a MacBook M1
## 1. TieredStopAtLevel=1
### 1.1 Script
git remote add wenshao git at github.com:wenshao/jdk.git
git fetch wenshao
# baseline
git checkout 990958a8724c88e7eeb4c0af7db4c937c51ffffe
make test TEST="micro:java.lang.constant.TypeKindFrom" MICRO="VM_OPTIONS=-Xint -XX:TieredStopAtLevel=1"
# current
git checkout a29acc54f2b13067cd4899d46f9d29c4e517aed0
make test TEST="micro:java.lang.constant.TypeKindFrom" MICRO="VM_OPTIONS=-Xint -XX:TieredStopAtLevel=1"
### 1.2 Performance Numbers
-# baseline
-Benchmark (typeName) Mode Cnt Score Error Units
-TypeKindFrom.fromClass B avgt 9 444.221 ? 9.995 ns/op
-TypeKindFrom.fromClass C avgt 9 442.828 ? 3.071 ns/op
-TypeKindFrom.fromClass Z avgt 9 432.887 ? 1.750 ns/op
-TypeKindFrom.fromClass S avgt 9 436.567 ? 2.582 ns/op
-TypeKindFrom.fromClass I avgt 9 432.613 ? 3.427 ns/op
-TypeKindFrom.fromClass F avgt 9 448.737 ? 2.134 ns/op
-TypeKindFrom.fromClass J avgt 9 433.297 ? 2.909 ns/op
-TypeKindFrom.fromClass D avgt 9 452.180 ? 1.926 ns/op
-TypeKindFrom.fromClass V avgt 9 454.183 ? 3.541 ns/op
-TypeKindFrom.fromClass java.lang.Object avgt 9 148.701 ? 0.141 ns/op
-TypeKindFrom.fromClassDesc B avgt 9 164.980 ? 0.412 ns/op
-TypeKindFrom.fromClassDesc C avgt 9 165.348 ? 0.638 ns/op
-TypeKindFrom.fromClassDesc Z avgt 9 164.978 ? 0.527 ns/op
-TypeKindFrom.fromClassDesc S avgt 9 164.685 ? 0.909 ns/op
-TypeKindFrom.fromClassDesc I avgt 9 164.591 ? 0.211 ns/op
-TypeKindFrom.fromClassDesc F avgt 9 164.399 ? 0.364 ns/op
-TypeKindFrom.fromClassDesc J avgt 9 164.907 ? 0.970 ns/op
-TypeKindFrom.fromClassDesc D avgt 9 164.221 ? 1.483 ns/op
-TypeKindFrom.fromClassDesc V avgt 9 164.275 ? 0.650 ns/op
-TypeKindFrom.fromClassDesc java.lang.Object avgt 9 164.773 ? 0.777 ns/op
+# current
+Benchmark (typeName) Mode Cnt Score Error Units
+TypeKindFrom.fromClass B avgt 9 82.000 ? 1.855 ns/op
+TypeKindFrom.fromClass C avgt 9 83.849 ? 0.757 ns/op
+TypeKindFrom.fromClass Z avgt 9 75.043 ? 0.567 ns/op
+TypeKindFrom.fromClass S avgt 9 91.629 ? 0.460 ns/op
+TypeKindFrom.fromClass I avgt 9 87.585 ? 0.441 ns/op
+TypeKindFrom.fromClass F avgt 9 96.923 ? 0.680 ns/op
+TypeKindFrom.fromClass J avgt 9 90.674 ? 0.178 ns/op
+TypeKindFrom.fromClass D avgt 9 103.853 ? 0.359 ns/op
+TypeKindFrom.fromClass V avgt 9 104.074 ? 1.012 ns/op
+TypeKindFrom.fromClass java.lang.Object avgt 9 116.578 ? 0.865 ns/op
+TypeKindFrom.fromClassDesc B avgt 9 116.473 ? 0.252 ns/op
+TypeKindFrom.fromClassDesc C avgt 9 116.450 ? 0.915 ns/op
+TypeKindFrom.fromClassDesc Z avgt 9 116.832 ? 0.389 ns/op
+TypeKindFrom.fromClassDesc S avgt 9 118.954 ? 3.664 ns/op
+TypeKindFrom.fromClassDesc I avgt 9 116.153 ? 0.302 ns/op
+TypeKindFrom.fromClassDesc F avgt 9 116.076 ? 0.400 ns/op
+TypeKindFrom.fromClassDesc J avgt 9 116.204 ? 1.159 ns/op
+TypeKindFrom.fromClassDesc D avgt 9 116.235 ? 0.605 ns/op
+TypeKindFrom.fromClassDesc V avgt 9 116.227 ? 1.319 ns/op
+TypeKindFrom.fromClassDesc java.lang.Object avgt 9 116.466 ? 0.929 ns/op
| | typeName | baseline | current | delta |
| --- | --- | --- | --- | --- |
| TypeKindFrom.fromClass | B | 444.221 | 82.000 | 441.73% |
| TypeKindFrom.fromClass | C | 442.828 | 83.849 | 428.13% |
| TypeKindFrom.fromClass | Z | 432.887 | 75.043 | 476.85% |
| TypeKindFrom.fromClass | S | 436.567 | 91.629 | 376.45% |
| TypeKindFrom.fromClass | I | 432.613 | 87.585 | 393.94% |
| TypeKindFrom.fromClass | F | 448.737 | 96.923 | 362.98% |
| TypeKindFrom.fromClass | J | 433.297 | 90.674 | 377.86% |
| TypeKindFrom.fromClass | D | 452.180 | 103.853 | 335.40% |
| TypeKindFrom.fromClass | V | 454.183 | 104.074 | 336.40% |
| TypeKindFrom.fromClass | java.lang.Object | 148.701 | 116.578 | 27.55% |
| TypeKindFrom.fromClassDesc | B | 164.980 | 116.473 | 41.65% |
| TypeKindFrom.fromClassDesc | C | 165.348 | 116.450 | 41.99% |
| TypeKindFrom.fromClassDesc | Z | 164.978 | 116.832 | 41.21% |
| TypeKindFrom.fromClassDesc | S | 164.685 | 118.954 | 38.44% |
| TypeKindFrom.fromClassDesc | I | 164.591 | 116.153 | 41.70% |
| TypeKindFrom.fromClassDesc | F | 164.399 | 116.076 | 41.63% |
| TypeKindFrom.fromClassDesc | J | 164.907 | 116.204 | 41.91% |
| TypeKindFrom.fromClassDesc | D | 164.221 | 116.235 | 41.28% |
| TypeKindFrom.fromClassDesc | V | 164.275 | 116.227 | 41.34% |
| TypeKindFrom.fromClassDesc | java.lang.Object | 164.773 | 116.466 | 41.48% |
## 2. Non-JVM Options
### 2.1 Script
git remote add wenshao git at github.com:wenshao/jdk.git
git fetch wenshao
# baseline
git checkout 990958a8724c88e7eeb4c0af7db4c937c51ffffe
make test TEST="micro:java.lang.constant.TypeKindFrom"
# current
git checkout a29acc54f2b13067cd4899d46f9d29c4e517aed0
make test TEST="micro:java.lang.constant.TypeKindFrom"
## 2.2 Performance Numbers
-# baseline
-Benchmark (typeName) Mode Cnt Score Error Units
-TypeKindFrom.fromClass B avgt 9 1.563 ? 0.004 ns/op
-TypeKindFrom.fromClass C avgt 9 1.716 ? 0.009 ns/op
-TypeKindFrom.fromClass Z avgt 9 1.252 ? 0.002 ns/op
-TypeKindFrom.fromClass S avgt 9 1.410 ? 0.015 ns/op
-TypeKindFrom.fromClass I avgt 9 1.268 ? 0.017 ns/op
-TypeKindFrom.fromClass F avgt 9 1.874 ? 0.013 ns/op
-TypeKindFrom.fromClass J avgt 9 1.096 ? 0.006 ns/op
-TypeKindFrom.fromClass D avgt 9 2.184 ? 0.018 ns/op
-TypeKindFrom.fromClass V avgt 9 2.183 ? 0.010 ns/op
-TypeKindFrom.fromClass java.lang.Object avgt 9 0.677 ? 0.061 ns/op
-TypeKindFrom.fromClassDesc B avgt 9 1.010 ? 0.003 ns/op
-TypeKindFrom.fromClassDesc C avgt 9 1.081 ? 0.001 ns/op
-TypeKindFrom.fromClassDesc Z avgt 9 1.082 ? 0.091 ns/op
-TypeKindFrom.fromClassDesc S avgt 9 1.010 ? 0.004 ns/op
-TypeKindFrom.fromClassDesc I avgt 9 1.010 ? 0.004 ns/op
-TypeKindFrom.fromClassDesc F avgt 9 1.010 ? 0.004 ns/op
-TypeKindFrom.fromClassDesc J avgt 9 1.049 ? 0.091 ns/op
-TypeKindFrom.fromClassDesc D avgt 9 1.012 ? 0.010 ns/op
-TypeKindFrom.fromClassDesc V avgt 9 1.010 ? 0.003 ns/op
-TypeKindFrom.fromClassDesc java.lang.Object avgt 9 1.011 ? 0.003 ns/op
+# current
+Benchmark (typeName) Mode Cnt Score Error Units
+TypeKindFrom.fromClass B avgt 9 0.646 ? 0.050 ns/op
+TypeKindFrom.fromClass C avgt 9 0.786 ? 0.016 ns/op
+TypeKindFrom.fromClass Z avgt 9 0.588 ? 0.092 ns/op
+TypeKindFrom.fromClass S avgt 9 1.245 ? 0.002 ns/op
+TypeKindFrom.fromClass I avgt 9 0.934 ? 0.002 ns/op
+TypeKindFrom.fromClass F avgt 9 1.402 ? 0.004 ns/op
+TypeKindFrom.fromClass J avgt 9 1.091 ? 0.004 ns/op
+TypeKindFrom.fromClass D avgt 9 1.713 ? 0.004 ns/op
+TypeKindFrom.fromClass V avgt 9 1.714 ? 0.004 ns/op
+TypeKindFrom.fromClass java.lang.Object avgt 9 1.713 ? 0.006 ns/op
+TypeKindFrom.fromClassDesc B avgt 9 1.735 ? 0.052 ns/op
+TypeKindFrom.fromClassDesc C avgt 9 1.712 ? 0.004 ns/op
+TypeKindFrom.fromClassDesc Z avgt 9 1.713 ? 0.006 ns/op
+TypeKindFrom.fromClassDesc S avgt 9 1.714 ? 0.008 ns/op
+TypeKindFrom.fromClassDesc I avgt 9 1.714 ? 0.005 ns/op
+TypeKindFrom.fromClassDesc F avgt 9 1.713 ? 0.005 ns/op
+TypeKindFrom.fromClassDesc J avgt 9 1.712 ? 0.004 ns/op
+TypeKindFrom.fromClassDesc D avgt 9 1.713 ? 0.004 ns/op
+TypeKindFrom.fromClassDesc V avgt 9 1.712 ? 0.008 ns/op
+TypeKindFrom.fromClassDesc java.lang.Object avgt 9 1.711 ? 0.005 ns/op
| | pattern | baseline | current | delta |
| --- | --- | --- | --- | --- |
| TypeKindFrom.fromClass | B | 1.563 | 0.646 | 141.95% |
| TypeKindFrom.fromClass | C | 1.716 | 0.786 | 118.32% |
| TypeKindFrom.fromClass | Z | 1.252 | 0.588 | 112.93% |
| TypeKindFrom.fromClass | S | 1.410 | 1.245 | 13.25% |
| TypeKindFrom.fromClass | I | 1.268 | 0.934 | 35.76% |
| TypeKindFrom.fromClass | F | 1.874 | 1.402 | 33.67% |
| TypeKindFrom.fromClass | J | 1.096 | 1.091 | 0.46% |
| TypeKindFrom.fromClass | D | 2.184 | 1.713 | 27.50% |
| TypeKindFrom.fromClass | V | 2.183 | 1.714 | 27.36% |
| TypeKindFrom.fromClass | java.lang.Object | 0.677 | 1.713 | -60.48% |
| TypeKindFrom.fromClassDesc | B | 1.010 | 1.735 | -41.79% |
| TypeKindFrom.fromClassDesc | C | 1.081 | 1.712 | -36.86% |
| TypeKindFrom.fromClassDesc | Z | 1.082 | 1.713 | -36.84% |
| TypeKindFrom.fromClassDesc | S | 1.010 | 1.714 | -41.07% |
| TypeKindFrom.fromClassDesc | I | 1.010 | 1.714 | -41.07% |
| TypeKindFrom.fromClassDesc | F | 1.010 | 1.713 | -41.04% |
| TypeKindFrom.fromClassDesc | J | 1.049 | 1.712 | -38.73% |
| TypeKindFrom.fromClassDesc | D | 1.012 | 1.713 | -40.92% |
| TypeKindFrom.fromClassDesc | V | 1.010 | 1.712 | -41.00% |
| TypeKindFrom.fromClassDesc | java.lang.Object | 1.011 | 1.711 | -40.91% |
After further improvements, the performance is significantly improved when the `TieredStopAtLevel=1` option is used.
Without the option,
1. the performance of from(ClassDesc) is significantly improved,
2. and the performance of from(Class) is mostly significantly improved.
3. The performance of from(Short.class) and from(Object) will regress.
Below are the performance numbers running on a MacBook M1.
## 1. TieredStopAtLevel=1
### 1.1 Script
git remote add wenshao git at github.com:wenshao/jdk.git
git fetch wenshao
# baseline
git checkout 2b5fce63d3789472db1d17a09ad68b074553c240
make test TEST="micro:java.lang.classfile.TypeKindFrom" MICRO="VM_OPTIONS=-Xint -XX:TieredStopAtLevel=1"
# current
git checkout 91d247afa409d596a53bce6dc7a04b22891d7acb
make test TEST="micro:java.lang.classfile.TypeKindFrom" MICRO="VM_OPTIONS=-Xint -XX:TieredStopAtLevel=1"
### 1.2 Performance Numbers
-# baseline
-Benchmark (typeName) Mode Cnt Score Error Units
-TypeKindFrom.fromClass B avgt 9 443.536 ? 12.381 ns/op
-TypeKindFrom.fromClass C avgt 9 439.212 ? 2.298 ns/op
-TypeKindFrom.fromClass Z avgt 9 432.323 ? 1.742 ns/op
-TypeKindFrom.fromClass S avgt 9 435.907 ? 2.671 ns/op
-TypeKindFrom.fromClass I avgt 9 429.435 ? 4.049 ns/op
-TypeKindFrom.fromClass F avgt 9 445.902 ? 2.401 ns/op
-TypeKindFrom.fromClass J avgt 9 429.381 ? 0.952 ns/op
-TypeKindFrom.fromClass D avgt 9 451.880 ? 1.594 ns/op
-TypeKindFrom.fromClass V avgt 9 452.816 ? 1.298 ns/op
-TypeKindFrom.fromClass java.lang.Object avgt 9 148.893 ? 0.680 ns/op
-TypeKindFrom.fromClassDesc B avgt 9 164.456 ? 1.403 ns/op
-TypeKindFrom.fromClassDesc C avgt 9 164.197 ? 0.567 ns/op
-TypeKindFrom.fromClassDesc Z avgt 9 165.000 ? 2.452 ns/op
-TypeKindFrom.fromClassDesc S avgt 9 164.275 ? 1.061 ns/op
-TypeKindFrom.fromClassDesc I avgt 9 164.437 ? 1.635 ns/op
-TypeKindFrom.fromClassDesc F avgt 9 164.765 ? 0.852 ns/op
-TypeKindFrom.fromClassDesc J avgt 9 164.663 ? 0.529 ns/op
-TypeKindFrom.fromClassDesc D avgt 9 164.284 ? 0.747 ns/op
-TypeKindFrom.fromClassDesc V avgt 9 165.224 ? 1.460 ns/op
-TypeKindFrom.fromClassDesc java.lang.Object avgt 9 164.755 ? 1.823 ns/op
+# current
+Benchmark (typeName) Mode Cnt Score Error Units
+TypeKindFrom.fromClass B avgt 9 157.207 ? 4.456 ns/op
+TypeKindFrom.fromClass C avgt 9 164.131 ? 0.311 ns/op
+TypeKindFrom.fromClass Z avgt 9 146.979 ? 2.045 ns/op
+TypeKindFrom.fromClass S avgt 9 166.140 ? 1.595 ns/op
+TypeKindFrom.fromClass I avgt 9 149.969 ? 0.844 ns/op
+TypeKindFrom.fromClass F avgt 9 159.677 ? 0.711 ns/op
+TypeKindFrom.fromClass J avgt 9 152.904 ? 0.558 ns/op
+TypeKindFrom.fromClass D avgt 9 145.127 ? 0.780 ns/op
+TypeKindFrom.fromClass V avgt 9 145.311 ? 0.812 ns/op
+TypeKindFrom.fromClass java.lang.Object avgt 9 139.149 ? 0.519 ns/op
+TypeKindFrom.fromClassDesc B avgt 9 76.149 ? 0.350 ns/op
+TypeKindFrom.fromClassDesc C avgt 9 75.970 ? 0.173 ns/op
+TypeKindFrom.fromClassDesc Z avgt 9 76.035 ? 0.438 ns/op
+TypeKindFrom.fromClassDesc S avgt 9 76.538 ? 1.112 ns/op
+TypeKindFrom.fromClassDesc I avgt 9 76.124 ? 0.308 ns/op
+TypeKindFrom.fromClassDesc F avgt 9 76.083 ? 0.145 ns/op
+TypeKindFrom.fromClassDesc J avgt 9 76.289 ? 0.377 ns/op
+TypeKindFrom.fromClassDesc D avgt 9 76.099 ? 0.086 ns/op
+TypeKindFrom.fromClassDesc V avgt 9 76.096 ? 0.130 ns/op
+TypeKindFrom.fromClassDesc java.lang.Object avgt 9 75.374 ? 1.990 ns/op
| | pattern | baseline | current | delta |
| --- | --- | --- | --- | --- |
| TypeKindFrom.fromClass | B | 443.536 | 157.207 | 182.14% |
| TypeKindFrom.fromClass | C | 439.212 | 164.131 | 167.60% |
| TypeKindFrom.fromClass | Z | 432.323 | 146.979 | 194.14% |
| TypeKindFrom.fromClass | S | 435.907 | 166.140 | 162.37% |
| TypeKindFrom.fromClass | I | 429.435 | 149.969 | 186.35% |
| TypeKindFrom.fromClass | F | 445.902 | 159.677 | 179.25% |
| TypeKindFrom.fromClass | J | 429.381 | 152.904 | 180.82% |
| TypeKindFrom.fromClass | D | 451.880 | 145.127 | 211.37% |
| TypeKindFrom.fromClass | V | 452.816 | 145.311 | 211.62% |
| TypeKindFrom.fromClass | java.lang.Object | 148.893 | 139.149 | 7.00% |
| TypeKindFrom.fromClassDesc | B | 164.456 | 76.149 | 115.97% |
| TypeKindFrom.fromClassDesc | C | 164.197 | 75.970 | 116.13% |
| TypeKindFrom.fromClassDesc | Z | 165.000 | 76.035 | 117.01% |
| TypeKindFrom.fromClassDesc | S | 164.275 | 76.538 | 114.63% |
| TypeKindFrom.fromClassDesc | I | 164.437 | 76.124 | 116.01% |
| TypeKindFrom.fromClassDesc | F | 164.765 | 76.083 | 116.56% |
| TypeKindFrom.fromClassDesc | J | 164.663 | 76.289 | 115.84% |
| TypeKindFrom.fromClassDesc | D | 164.284 | 76.099 | 115.88% |
| TypeKindFrom.fromClassDesc | V | 165.224 | 76.096 | 117.13% |
| TypeKindFrom.fromClassDesc | java.lang.Object | 164.755 | 75.374 | 118.58% |
## 2. Non-JVM Options
### 2.1 Script
git remote add wenshao git at github.com:wenshao/jdk.git
git fetch wenshao
# baseline
git checkout 2b5fce63d3789472db1d17a09ad68b074553c240
make test TEST="micro:java.lang.classfile.TypeKindFrom"
# current
git checkout 91d247afa409d596a53bce6dc7a04b22891d7acb
make test TEST="micro:java.lang.classfile.TypeKindFrom"
## 2.2 Performance Numbers
-# baseline
-Benchmark (typeName) Mode Cnt Score Error Units
-TypeKindFrom.fromClass B avgt 9 1.562 ? 0.006 ns/op
-TypeKindFrom.fromClass C avgt 9 1.720 ? 0.010 ns/op
-TypeKindFrom.fromClass Z avgt 9 1.253 ? 0.007 ns/op
-TypeKindFrom.fromClass S avgt 9 1.418 ? 0.018 ns/op
-TypeKindFrom.fromClass I avgt 9 1.089 ? 0.007 ns/op
-TypeKindFrom.fromClass F avgt 9 1.871 ? 0.011 ns/op
-TypeKindFrom.fromClass J avgt 9 1.098 ? 0.004 ns/op
-TypeKindFrom.fromClass D avgt 9 2.184 ? 0.014 ns/op
-TypeKindFrom.fromClass V avgt 9 2.183 ? 0.015 ns/op
-TypeKindFrom.fromClass java.lang.Object avgt 9 0.660 ? 0.037 ns/op
-TypeKindFrom.fromClassDesc B avgt 9 1.027 ? 0.036 ns/op
-TypeKindFrom.fromClassDesc C avgt 9 1.014 ? 0.011 ns/op
-TypeKindFrom.fromClassDesc Z avgt 9 1.012 ? 0.010 ns/op
-TypeKindFrom.fromClassDesc S avgt 9 1.013 ? 0.008 ns/op
-TypeKindFrom.fromClassDesc I avgt 9 1.018 ? 0.016 ns/op
-TypeKindFrom.fromClassDesc F avgt 9 1.021 ? 0.015 ns/op
-TypeKindFrom.fromClassDesc J avgt 9 1.014 ? 0.014 ns/op
-TypeKindFrom.fromClassDesc D avgt 9 1.015 ? 0.016 ns/op
-TypeKindFrom.fromClassDesc V avgt 9 1.027 ? 0.037 ns/op
-TypeKindFrom.fromClassDesc java.lang.Object avgt 9 1.015 ? 0.015 ns/op
+# current
+Benchmark (typeName) Mode Cnt Score Error Units
+TypeKindFrom.fromClass B avgt 9 1.091 ? 0.003 ns/op
+TypeKindFrom.fromClass C avgt 9 1.559 ? 0.006 ns/op
+TypeKindFrom.fromClass Z avgt 9 0.720 ? 0.080 ns/op
+TypeKindFrom.fromClass S avgt 9 1.558 ? 0.005 ns/op
+TypeKindFrom.fromClass I avgt 9 0.805 ? 0.027 ns/op
+TypeKindFrom.fromClass F avgt 9 1.247 ? 0.005 ns/op
+TypeKindFrom.fromClass J avgt 9 0.934 ? 0.002 ns/op
+TypeKindFrom.fromClass D avgt 9 0.729 ? 0.075 ns/op
+TypeKindFrom.fromClass V avgt 9 0.754 ? 0.003 ns/op
+TypeKindFrom.fromClass java.lang.Object avgt 9 0.758 ? 0.007 ns/op
+TypeKindFrom.fromClassDesc B avgt 9 0.665 ? 0.037 ns/op
+TypeKindFrom.fromClassDesc C avgt 9 0.695 ? 0.092 ns/op
+TypeKindFrom.fromClassDesc Z avgt 9 0.662 ? 0.018 ns/op
+TypeKindFrom.fromClassDesc S avgt 9 0.733 ? 0.004 ns/op
+TypeKindFrom.fromClassDesc I avgt 9 0.662 ? 0.018 ns/op
+TypeKindFrom.fromClassDesc F avgt 9 0.708 ? 0.066 ns/op
+TypeKindFrom.fromClassDesc J avgt 9 0.659 ? 0.008 ns/op
+TypeKindFrom.fromClassDesc D avgt 9 0.743 ? 0.029 ns/op
+TypeKindFrom.fromClassDesc V avgt 9 0.720 ? 0.080 ns/op
+TypeKindFrom.fromClassDesc java.lang.Object avgt 9 0.694 ? 0.093 ns/op
| | pattern | baseline | current | delta |
| --- | --- | --- | --- | --- |
| TypeKindFrom.fromClass | B | 1.562 | 1.091 | 43.17% |
| TypeKindFrom.fromClass | C | 1.720 | 1.559 | 10.33% |
| TypeKindFrom.fromClass | Z | 1.253 | 0.720 | 74.03% |
| TypeKindFrom.fromClass | S | 1.418 | 1.558 | -8.99% |
| TypeKindFrom.fromClass | I | 1.089 | 0.805 | 35.28% |
| TypeKindFrom.fromClass | F | 1.871 | 1.247 | 50.04% |
| TypeKindFrom.fromClass | J | 1.098 | 0.934 | 17.56% |
| TypeKindFrom.fromClass | D | 2.184 | 0.729 | 199.59% |
| TypeKindFrom.fromClass | V | 2.183 | 0.754 | 189.52% |
| TypeKindFrom.fromClass | java.lang.Object | 0.660 | 0.758 | -12.93% |
| TypeKindFrom.fromClassDesc | B | 1.027 | 0.665 | 54.44% |
| TypeKindFrom.fromClassDesc | C | 1.014 | 0.695 | 45.90% |
| TypeKindFrom.fromClassDesc | Z | 1.012 | 0.662 | 52.87% |
| TypeKindFrom.fromClassDesc | S | 1.013 | 0.733 | 38.20% |
| TypeKindFrom.fromClassDesc | I | 1.018 | 0.662 | 53.78% |
| TypeKindFrom.fromClassDesc | F | 1.021 | 0.708 | 44.21% |
| TypeKindFrom.fromClassDesc | J | 1.014 | 0.659 | 53.87% |
| TypeKindFrom.fromClassDesc | D | 1.015 | 0.743 | 36.61% |
| TypeKindFrom.fromClassDesc | V | 1.027 | 0.720 | 42.64% |
| TypeKindFrom.fromClassDesc | java.lang.Object | 1.015 | 0.694 | 46.25% |
-------------
PR Comment: https://git.openjdk.org/jdk/pull/20762#issuecomment-2322212655
PR Comment: https://git.openjdk.org/jdk/pull/20762#issuecomment-2323316074
More information about the core-libs-dev
mailing list