Ваш вопрос недостаточно ясен, чтобы дать отдаленно точный ответ, но я думаю, что понимаю, куда вы направляетесь. Данные, по которым вы выполняете итерацию, достаточно велики, и прежде чем вы достигнете конца, вы начнете извлекать данные, так что во второй раз (второй цикл) вы итерируете по ним некоторые, если не все, повторное чтение.
Если два цикла были объединены таким образом, что каждый элемент / блок выбирается для первой операции, а затем уже находится в кеше для второй операции, то независимо от того, насколько большими являются данные относительно кеша, если не все вторые операции получат свои данные из кеша.
Различные вещи, такие как природа кэша, цикл, который вытесняется данными, затем извлекается, вытесняя данные, может вызвать некоторые пропуски во второй операции. На компьютере с операционной системой произойдет много выселений, когда другие программы получат временные интервалы. Но если предположить, что в идеальном мире первая операция с индексом i данных извлечет ее из памяти, вторая операция получит ее из кэша.
Настройка кеша в лучшем случае сложна. Я регулярно демонстрирую, что даже со встроенной системой, без прерываний, с одной задачей, одним и тем же исходным кодом. Время выполнения / производительность могут сильно различаться, просто меняя параметры оптимизации компилятора, изменяя компиляторы, как марки компиляторов, так и версии компиляторов, gcc 2.x против 3.x против 4.x (gcc не обязательно производит более быстрый код с более новыми версиями, кстати) ) (и компилятор, который довольно хорош во многих целях, не очень хорош ни в одной конкретной цели). Один и тот же код различных компиляторов или опций может изменять время выполнения в несколько раз, в 3 раза быстрее, в 10 раз быстрее и т. Д. Как только вы приступите к тестированию с кешем или без него, это станет еще интереснее. Добавьте один nop в ваш стартовый код, чтобы вся ваша программа переместилась на одну инструкцию в памяти, и ваши строки кэша теперь попадают в разные места. Тот же компилятор, тот же код. Повторите это с двумя nops, тремя nops и т. Д. Один и тот же компилятор, один и тот же код, вы можете видеть различия в десятки процентов (для тестов, которые я провел в тот день на этой цели с этим компилятором) различия все лучше и хуже. Это не означает, что вы не можете настроить кеш, это просто означает, что попытка выяснить, помогает ли ваша настройка или причиняет вред, может быть трудной. Обычный ответ - просто «время и посмотри», но это больше не работает, и вы можете получить отличные результаты на своем компьютере в тот день с этой программой с этим компилятором. Но завтра на вашем компьютере или в любой другой день на чужом компьютере вы, возможно, будете делать вещи медленнее, а не быстрее. Вам нужно понять, почему те или иные изменения сделали это быстрее, возможно, это не имело никакого отношения к вашему коду, ваша программа электронной почты могла загружать много почты в фоновом режиме во время одного теста, а не во время другого.
Предполагая, что я правильно понял ваш вопрос, я думаю, что в целом один цикл, вероятно, быстрее.