История изменений
Исправление xaizek, (текущая версия) :
Я потом отредактировал:
range-for в теории может быть быстрее как раз потому что для компилятора это -1 оптимизация для приближения к идеалу для случая, когда индекс не нужен.
С парой указателей компилятору должно быть проще работать чем с вызовом метода, this, полями объекта, индексированием. В моём примере видно, что компилятор не стал выкидывать индекс, потому что объект который пришёл в функцию f2() может скрытно измениться в функции g() и указатель на начало массива перечитывается на каждой итерации из памяти.
Здесь я бы сказал, что код медленнее.
Исходная версия xaizek, :
Я потом отредактировал:
range-for в теории может быть быстрее как раз потому что для компилятора это -1 оптимизация для приближения к идеалу для случая, когда индекс не нужен.
С парой указателей компилятору должно быть проще работать чем с вызовом метода, this, полями объекта, индексированием. В моём примере видно, что alias analysis видимо не дал возможность выкинуть индекс, потому что объект который пришёл в функцию f2() может скрытно измениться в функции g() и указатель на начало массива перечитывается на каждой итерации из памяти.
Здесь я бы сказал, что код медленнее.