Является ли 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-битную платформу.