Первая форма - это именно та структура, которую ваш компилятор распознает и оптимизирует, почти наверняка испуская инструкции SSE.
Для такого рода тривиального внутреннего цикла эффекты кэша не имеют значения, потому что вы перебираете все. Если у вас есть вложенные циклы или последовательность операций (например, g (f (A, B), C)), то вы можете попытаться организовать доступ к небольшим блокам памяти несколько раз, чтобы сделать их более удобными для кэша.
Do not развернуть цикл вручную. Ваш компилятор тоже сделает это, если это хорошая идея (которой может не быть на современном процессоре).
OpenMP может помочь, если цикл большой и операции внутри него достаточно сложны, и вы не ограничены памятью.
В общем, пишите свой код естественным и простым способом, потому что именно это ваш оптимизирующий компилятор, скорее всего, поймет.