Использует ли 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 варианты виртуальной машины.

Другие вопросы по тегам