Компиляторы Java обычно предварительно вычисляют хеш-коды конечных полей?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Компиляторы Java обычно предварительно вычисляют хеш-коды конечных полей?

Сообщение Anonymous »

У меня есть Java-программа с интенсивным использованием HashMap, в которой несколько классов имеют хэш-коды, вычисляемые из конечных полей. Например:

Код: Выделить всё

public class Foo {
private final int bar;
private final String zot;

@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + bar;
result = prime * result + zot.hashCode();
return result;
}
}
Компилятор может заметить, что хэш-код не может измениться после инициализации объекта, и предварительно вычислить его в дополнительное закрытое поле Final. Делают ли это современные компиляторы Java, например, в Oracle JDK 7? Я мог бы дизассемблировать файл .class, но тогда JIT также может выполнять такую ​​оптимизацию во время выполнения, и я бы ее там не увидел. В любом случае, помимо этого, меня интересуют и другие случаи, поэтому было бы здорово найти общий подход для определения любых оптимизаций, которые компилятор выполняет автоматически.

Подробнее здесь: https://stackoverflow.com/questions/190 ... nal-fields
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»