Должен ли я организовать объявления переменных для выравнивания слов в Java? - PullRequest
2 голосов
/ 01 октября 2010

В C / C ++ общепринятой практикой является размещение объявлений полей в часто используемых структурах, чтобы поля разных размеров были плотно упакованы вместе и по возможности выровнены по границам слов.Читаемость кода приносится в жертву эффективности машины.Стоит ли такая же практика для Java?Реализуют ли компиляторы / виртуальные машины реального мира их внутреннее расположение для выравнивания?

Ответы [ 2 ]

1 голос
/ 08 октября 2010

Сам нашел ответ для JVM HotSpot (Sun):

"Упаковка объектов

Добавлена ​​функциональность упаковки объектов, чтобы минимизировать потерянное пространство между типами данных разных размеров. Это, прежде всего, преимущество в 64-битных средах, но дает небольшое преимущество даже в 32-битных виртуальных машинах.

.... (пример объявлений полей)

Теперь поля переупорядочены, чтобы выглядеть следующим образом:

.... (переупорядоченные объявления полей)

В этом примере пространство памяти не теряется. «

из http://java.sun.com/products/hotspot/docs/whitepaper/Java_Hotspot_v1.4.1/Java_HSpot_WP_v1.4.1_1002_2.html

1 голос
/ 01 октября 2010

Если у вас есть ресурсы для запуска виртуальной машины, вам, вероятно, не придется заботиться о таких мелких деталях. По крайней мере, в типичном серверном Java-приложении подход обычно заключается в кодировании для ясности и удобства сопровождения, а также в доверии компилятора и виртуальной машины позаботиться об эффективности. В пределах разумного, конечно.

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