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