так-то конечно, если проверить на этапе компиляции, что:
1. внутри цикла не может измениться размер того, по чему бегаем
2. внутри цикла не может измениться индекс, которым бегаем
3. если внутри цикла не вызывается то, что может изменить 1 или 2
4. если мы обращаемся только по индексу без арифметики
5. ??? (прибавьте сюда ещё чего-нибудь)
... то можно оптимизировать )