-
Bug
-
Resolution: Fixed
-
P3
-
9, 11, 12
-
b70
-
b03
-
x86
-
generic
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8218976 | 11.0.4-oracle | Valerie Peng | P3 | Resolved | Fixed | b02 |
JDK-8220034 | 11.0.4 | Valerie Peng | P3 | Resolved | Fixed | b01 |
JDK-8221945 | 11.0.3-oracle | Valerie Peng | P3 | Resolved | Fixed | b31 |
JDK-8221417 | 11.0.2 | Valerie Peng | P3 | Closed | Fixed | b31 |
JDK-8227946 | openjdk8u232 | Andrew Hughes | P3 | Resolved | Fixed | b01 |
JDK-8227796 | openjdk8u222 | Andrew Hughes | P3 | Resolved | Fixed | b09 |
JDK-8242158 | 8u261 | Sean Coffey | P3 | Resolved | Fixed | b02 |
JDK-8246992 | emb-8u261 | Sean Coffey | P3 | Resolved | Fixed | team |
JDK-8227907 | openjdk7u | Andrew Hughes | P3 | Resolved | Fixed | master |
Performance JDK9 became worse than JDK8 by 20%-28%.
(data collected on Intel Core i5-5300U)
jdk8 1.8.0_65-b17
Benchmark (algorithm) (dataSize) (keyLength) (provider) Mode Cnt Score Error Units
AESBench.decrypt AES/ECB/NoPadding 1024 128 thrpt 40 877361.121 ± 16739.704 ops/s
AESBench.encrypt AES/ECB/NoPadding 1024 128 thrpt 40 1044189.005 ± 13780.381 ops/s
jdk9b72
Benchmark (algorithm) (dataSize) (keyLength) (provider) Mode Cnt Score Error Units
AESBench.decrypt AES/ECB/NoPadding 1024 128 thrpt 240 824861.201 ± 6783.383 ops/s
AESBench.encrypt AES/ECB/NoPadding 1024 128 thrpt 240 965084.477 ± 6624.554 ops/s
jdk9b73
Benchmark (algorithm) (dataSize) (keyLength) (provider) Mode Cnt Score Error Units
AESBench.decrypt AES/ECB/NoPadding 1024 128 thrpt 240 733935.602 ± 3856.189 ops/s
AESBench.encrypt AES/ECB/NoPadding 1024 128 thrpt 240 819966.663 ± 8685.148 ops/s
The reason of the performance regression in adding range checks into com.sun.crypto.provider.AESCrypt.encryptBlock/decryptBlock methods and hotspot is unable to move out of loop this checks.
Sugested fix: introduce methods encryptBlocks/decryptBlocks and move range checks out of loop manually.
Results (on jdk10):
jdk10(baseline)
Benchmark (algorithm) (dataSize) (keyLength) (provider) Mode Cnt Score Error Units
AESBench.decrypt AES/ECB/NoPadding 1024 128 thrpt 40 660722.552 ± 22153.323 ops/s
AESBench.encrypt AES/ECB/NoPadding 1024 128 thrpt 40 699155.163 ± 61539.097 ops/s
jdk10(fixed)
Benchmark (algorithm) (dataSize) (keyLength) (provider) Mode Cnt Score Error Units
AESBench.decrypt AES/ECB/NoPadding 1024 128 thrpt 40 939556.785 ± 9222.515 ops/s
AESBench.encrypt AES/ECB/NoPadding 1024 128 thrpt 40 1141960.563 ± 11074.921 ops/s
Suggested fix not only remove the regression, besides it gives small speedup and finally JDK10 is 7%-9% faster than JDK8.
Suggested fix: http://cr.openjdk.java.net/~skuksenko/crypto/8179098/webrev.00/
- backported by
-
JDK-8218976 Crypto AES/ECB encryption/decryption performance regression (introduced in jdk9b73)
- Resolved
-
JDK-8220034 Crypto AES/ECB encryption/decryption performance regression (introduced in jdk9b73)
- Resolved
-
JDK-8221945 Crypto AES/ECB encryption/decryption performance regression (introduced in jdk9b73)
- Resolved
-
JDK-8227796 Crypto AES/ECB encryption/decryption performance regression (introduced in jdk9b73)
- Resolved
-
JDK-8227907 Crypto AES/ECB encryption/decryption performance regression (introduced in jdk9b73)
- Resolved
-
JDK-8227946 Crypto AES/ECB encryption/decryption performance regression (introduced in jdk9b73)
- Resolved
-
JDK-8242158 Crypto AES/ECB encryption/decryption performance regression (introduced in jdk9b73)
- Resolved
-
JDK-8246992 Crypto AES/ECB encryption/decryption performance regression (introduced in jdk9b73)
- Resolved
-
JDK-8221417 Crypto AES/ECB encryption/decryption performance regression (introduced in jdk9b73)
- Closed
- relates to
-
JDK-8228440 TestAESCiphers tests fail with "access denied" trying to access ArrayUtil
- Resolved
-
JDK-8076112 Add @HotSpotIntrinsicCandidate annotation to indicate methods for which Java Runtime has intrinsics
- Resolved
-
JDK-8201633 Problems with AES-GCM native acceleration
- Resolved