В Ответ На Вопрос, Почему Доступ К Элементу Массива Происходит Быстрее, Чем Доступ К Полям Объекта

Совсем недавно, дорогая Лэни написал замечательный пост об изменяемых числах в Java: http://habrahabr.ru/post/151887/ В комментарии к его посту я упомянул, что если важна производительность, то можно заменить объект-обертку одноэлементным массивом; доступ к элементу массива по определению происходит быстрее, чем получение значения из поля экземпляра.

Я унаследовал этот стереотип от Сана после прочтения еще одного официального документа о производительности.

Там было написано, что самый быстрый доступ — к локальной переменной, за ней следует статическое поле, затем элемент массива и поле экземпляра замыкает этот список.

К счастью, мне на слово не поверили и это стало причиной написания данной статьи.

Статья не предназначена для юниоров; читатель должен знать Java, ASM x86 и байт-код. Чтобы понять, будет ли доступ к элементу массива более быстрым по сравнению с доступом к полю объекта, вы можете:

  1. Написать синтетический тест производительности
  2. Поймите, что на самом деле стоит за array[0] и this.value
Я выбрал второй путь, синтетические тесты мне уже надоели.

Сначала давайте создадим тестовый класс.

   

package numbers; public class TestNumbers {

Теги: #hotspot #производительность #java
Вместе с данным постом часто просматривают: