(Вопрос для тех, кто хорошо знает компиляцию и оптимизацию JVM...: -)
Есть ли какие-либо из шаблонов "for" и "foreach", явно превосходящие другие?
Рассмотрим следующие два примера:
public void forLoop(String[] text)
{
if (text != null)
{
for (int i=0; i<text.length; i++)
{
// Do something with text[i]
}
}
}
public void foreachLoop(String[] text)
{
if (text != null)
{
for (String s : text)
{
// Do something with s, exactly as with text[i]
}
}
}
Является forLoop
быстрее или медленнее, чем foreachLoop
?
Предполагая, что в обоих случаях массив text
не нуждался в каких-либо проверках здравомыслия, есть ли явный победитель или еще слишком близко, чтобы позвонить?
РЕДАКТ. Как отмечалось в некоторых ответах, производительность должна быть одинаковой для массивов, тогда как шаблон "foreach" может быть немного лучше для абстрактных типов данных, таких как List. См. Также этот ответ, в котором обсуждается предмет.