Производительность шифрования Java AES и производительность openssl - PullRequest
0 голосов
/ 28 ноября 2018

Я измерял производительность java 11, встроенной в инструкции AES-NI, и с включенным NI через JAVA_TOOL_OPTIONS -> -XX:+UnlockDiagnosticVMOptions -XX:+UseAES -XX:+UseAESIntrinsics я запускаю тесты, которые присутствуют в самом open jdk, через java -server -jar target/jmh-jdk-microbenchmarks-1.0-SNAPSHOT.jar org.openjdk.bench.javax.crypto.full.AESBench.encrypt -p algorithm=AES/ECB/NoPadding

Когда я сравниваю результаты и вычисляю пропускную способность в ГБ / с для блоков кодирования 16k, я получаю около 20% пропускной способности по сравнению с тестом производительности openssl через openssl speed -evp aes-128-ecb.

Не знаюКажется, что нет достойного сравнения / эталона, который описывает, какой процент максимальной производительности ожидать с jdk 11, но 20% кажется довольно низким.Кто-нибудь знает о сравнении (или может иметь представление о том, где я ошибаюсь, так как это стандартные инструменты для перфорирования, я думаю, что не так много можно изменить там).

Для справки тест openssl сообщает об этом:

The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes  16384 bytes
aes-128-ecb     825652.24k  3185957.03k  5251673.77k  5827996.33k  6027457.88k  6031906.13k

Тест openjdk сообщает об этом

Benchmark               (algorithm)  (dataSize)  (keyLength)  (provider)   Mode  Cnt      Score      Error  Units
AESBench.encrypt  AES/ECB/NoPadding       16384          128              thrpt   40  84543.829 ± 9034.592  ops/s

Из чего я заключаю, что для блоков 16kПроизводительность здесь составляет 85000 * 16k, или около 1,4 ГБ / с, или около 20% от числа openssl.

Это ожидается или я делаю неправильные выводы?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...