Автоматическая оптимизация компилятора в структурах управления Java?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Автоматическая оптимизация компилятора в структурах управления Java?

Сообщение Anonymous »

У меня небольшой вопрос о том, насколько «умным» является компилятор Java, входящий в состав Sun JDK. В частности, достаточно ли разумно заранее оценивать любые функции, появляющиеся в условной части цикла for(), вместо того, чтобы оценивать их на каждой итерации цикла?
Например, рассмотрим следующий код.

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

// Array of doubles to "hold" the array.
private double matrix[][];

public int getCols() {
// Compute the number of columns in a matrix.
}

public int getRows() {
// Compute the number of rows in a matrix.
}

// Compute the sum of all elements in the matrix.
public double sum() {

double result = 0;

for (int r = 0; r < getRows(); r++) {
for (int c = 0; c < getCols(); c++) {
result += this.matrix[r][c];
}
}

return result;
}
Очевидно, я мог бы изменить метод sum(), чтобы гарантировать, что методы getRows() и getCols() не оцениваются на каждой итерации цикла, изменив это

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

public double sum() {

double result = 0;
int numRows = getRows();
int numCols = getCols();

for (int r = 0; r < numRows; r++) {
for (int c = 0; c < numCols; c++) {
result += this.matrix[r][c];
}
}

return result;
}
Однако мне интересно, достаточно ли умен компилятор, чтобы предварительно оценить их самостоятельно. То есть, будет ли он автоматически определять, что с вычислительной точки зрения дешевле вычислять любые функции, которые появляются в условных выражениях, заранее, а не оценивать их на каждой итерации?

Подробнее здесь: https://stackoverflow.com/questions/679 ... structures
Ответить

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

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

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

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

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