Друзья, не могу понять причину долго работы цикла. Значит, создаю цикл.
for (int i = 1; i < Integer.MAX_VALUE; i++) {
// Вычисляем количество цифр в числе i
int length = (int)Math.ceil(Math.log10(i));
}
Вся программа таким образом работает 10ms и благополучно завершается. Такая программа работает 3ms:
for (int i = 1; i < Integer.MAX_VALUE; i++) {
// Создаем массив длиной 10 (количество цифр в Integer.MAX_VALUE)
int[] digits = new int[10];
}
А вот эта программа подвисает надолго:
for (int i = 1; i < Integer.MAX_VALUE; i++) {
int length = (int)Math.ceil(Math.log10(i));
int[] digits = new int[length];
}
Почему? Ведь значение length
всегда будет меньше или равно 10. Этого и не могу понять. Ведь такая программа работает всего 12ms:
for (int i = 1; i < Integer.MAX_VALUE; i++) {
int length = (int)Math.ceil(Math.log10(i));
int[] digits = new int[10];
}
Источник: https://ru.stackoverflow.com/questions/509293/%D0%A6%D0%B8%D0%BA%D0%BB-for-%D0%B2-java
Свежие комментарии