Является ли Java 64 бит лучше, чем 32-разрядная версия?
Я заметил Sun предоставляет 64-битную версию Java. Он работает лучше, чем 32-разрядная версия?
Ответы
Ответ 1
Определите свою рабочую нагрузку и что означает "выполнить".
Это своего рода запутанная досада для меня, как долгоиграющая выродка. Независимо от того, выполняется ли какое-либо конкретное изменение "лучше" или нет, зависит, прежде всего, от рабочей нагрузки, то есть от того, что вы просите, чтобы программа выполняла.
64-битная Java часто будет лучше работать с вещами с тяжелыми вычислительными нагрузками. Java-программы, классически, имеют тяжелые нагрузки ввода-вывода и тяжелые сетевые нагрузки; 64-разрядная и 32-разрядная могут не иметь значения, но обычно работают операционные системы.
Ответ 2
Почти всегда 64 бит будут медленнее.
Чтобы процитировать Sun из Часто задаваемые вопросы по HotSpot:
Сравнение разности производительности приложение, работающее на 64-битной платформа против 32-битной платформы на SPARC составляет порядка 10-20% ухудшение при переходе на 64-битный VM. На платформах AMD64 и EM64T это разница варьируется от 0-15% в зависимости по количеству доступа к указателю ваше приложение выполняет.
Более подробную информацию можно найти по ссылке.
Ответ 3
64-бит лучше работает, если вам нужно намного больше 1,2 ГБ. На некоторых платформах вы можете получить до 3 ГБ, но если вы хотите, например, 4 - 384 ГБ, ваш единственный вариант - 64-битный.
Я считаю, что Azul поддерживает JVM емкостью 384 ГБ, кто-нибудь знает, можете ли вы пойти выше?
Ответ 4
На большинстве архитекторов CPU 32-бит быстрее 64-битного, при прочих равных условиях. Для 64-разрядных указателей требуется в два раза больше полосы пропускания для передачи в виде 32 бит. Однако архитектура набора команд x64 добавляет немного здравого смысла по сравнению с x86, поэтому она заканчивается быстрее. Количество обработки длинных типов обычно невелико.
Конечно, это также зависит от реализации Java. Как и компилятор, вы можете обнаружить различия в реализации; например, NIO предполагает 64-битные указатели. Также обратите внимание, что Sun ранее отправляла более быстрый сервер HotSpot для x64. Это означало, что если вы указали -d64
, вы также переключитесь с клиента на сервер HotSpot, IIRC.
Ответ 5
Некоторые улучшения: операции с удвоениями на 64 битах вычисляются одинаково быстро, как float на 32 бита, а также операции с длиной в 64 бит по сравнению с int.
Итак, если вы используете код с множеством длин, вы можете увидеть реальное улучшение.
Ответ 6
Мой опыт отличается от других ответов.
Java 64bit может быть быстрее 32 бит. По крайней мере, мои тесты всегда были! Аргумент указателя недействителен, если используется менее 4 ГБ, потому что 64-битная виртуальная машина также будет использовать короткие указатели внутри. Однако вы получаете более быстрый набор команд из 64-битных процессоров!
Я тестировал это с Windows 7 и JDE1.8.0_144, но, возможно, настоящая причина - это разные внутренние настройки JVM. Когда вы используете 64-битную JVM, она запускается в режиме "сервер", а 32-разрядная виртуальная машина запускается в "клиентском" режиме.
Ответ 7
Да, особенно если ваш код создан для установки на 64-битную платформу.