Мне было поручено работать над проектом Android-Java (в режиме реального времени) со значительной (частично устаревшей) базой кода.
Большинство петель, которые я вижу, похожи на это (где mjk обычно является массивом Java):
int count = mjk.length;
for (int i = 0; i != count; ++i) {
// Stuff dealing with mjk[i]
}
Я вообще пишу такие петли, как это:
int count = mjk.length;
for (int i = 0; i < count; i++) {
// Stuff dealing with mjk[i]
}
Любая идея, почему оригинальный автор (с которым я не мог связаться до сих пор) использовал предыдущую форму? Это распространено в С++?
Практическая причина, по которой я спрашиваю об этом, - оптимизация JIT: насколько я знаю, Android оптимизирует циклы (переменные индукции, инварианты, миграцию диапазона до перехода к проводу цикла и т.д.), и я задаюсь вопросом, может ли неравный способ предотвратить такую оптимизацию (в отличие от нижнего, чем, который задает четко определенный диапазон).
Мне просто интересно, есть ли у первого использования какие-либо преимущества/недостатки по сравнению со вторым (во всех отношениях).