Избегайте повторных вычислений в циклах
Не выполняйте избыточные вычисления в циклах, если они гарантированно возвращают одни и те же значения (не изменяются в в пределах цикла).
Например, в условиях циклов не вызывайте функции для подсчёта количества итераций на каждом шаге. Вместо этого заранее сохраните это значение в переменную.
Плохой пример:
Правильно:
или еще лучше использовать range-for циклы
На самом деле, в примере выше, если size является тривиальным inline-методом (возвращает разницу указателей или значение поля), то любой современный компилятор выполнит необходимые оптимизации - вынесет вызов за пределы цикла (loop-invariant code motion), а для таких контейнеров как std::vector метод size() стандарт гарантирует O(1), и компилятор это знает.