Почему цикл for выполняется быстрее, когда он выполняется внутри вспомогательной функции?JAVA

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

Сообщение Anonymous »

Я делал LC# 1002 и потратил час, чтобы понять, почему время выполнения уменьшилось с 3 мс до 1 мс после того, как я внес это изменение. Их логика мне кажется абсолютно одинаковой.
3мс

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

        // Update the count array by intersecting with each subsequent word
for (int i = 1; i < words.length; i++) {
int[] t = new int[26];
for (char c : words[i].toCharArray()) {
t[c - 'a']++;
}

last = intersection(last, t);
}
до
1 мс

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

// Update the count array by intersecting with each subsequent word
for (int i = 1; i < words.length; i++) {
last = intersection(last, count(words[i]));
}
private int[] count(String str) {
int[] t = new int[26];
for (char c : str.toCharArray()) {
t[c - 'a']++;
}
return t;
}
Я проверял, что дело не в месте создания int[] t.
Почему в отдельной вспомогательной функции он работает быстрее?< /п>

Подробнее здесь: https://stackoverflow.com/questions/787 ... r-function
Ответить

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

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

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

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

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