Использует ли Java AES-NI, когда доступно?
Я только что услышал о расширении набора инструкций AES-NI. Компилирует ли JIT-компилятор Java приложение для использования AES-NI, если оно доступно для повышения производительности?
И если да, делает ли это также, если не уверен, что AES будет использоваться (как при использовании TLS)?
2 ответа
Я думаю, что это не в комплекте с JDK, вы должны скачать и собрать его самостоятельно
См. https://software.intel.com/en-us/articles/intel-aes-ni-performance-testing-on-linuxjava-stack
Java 8 и 7u40 и более поздние версии включают поддержку встроенных функций x86 AES для встроенного поставщика SunJCE, но эта функция не включена по умолчанию (так и есть).
Искать globals.hpp для "AES":
product(bool, UseAES, false, \
"Control whether AES instructions can be used on x86/x64") \
...
product(bool, UseAESIntrinsics, false, \
"Use intrinsics for AES versions of crypto") \
Вы можете включить функцию, передав -XX:+UseAES -XX:+UseAESIntrinsics
варианты виртуальной машины.