Почему цикл 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»