kirikа откуда инфа, что форич копирует массив целиком? насколько я знаю, он при прохождении по нему копирует элементы в переменные value и key, но не сам массив. Кстати то, что форич быстрее мне объясняет как раз то, что с ним не приходится скакать по массиву с итератором. форич сам планомерно передвигает указатель, и все. а фор и вайл обращаются к элементам по индексу (копирования нет), а значит (не факт, конечно), что допустим оверхед за счет того, что массивы нетипизированы. Считай, размер всех элементов разный. И для того чтобы перейти к 1000му элементу, возможно, требуется несколько больше, чем просто передвинуть указатель.
ЗЫ:
1. более чем уверен, что результаты тестов не будут подтверждены при другом раскладе.
2. тесты не сказать, чтобы верны. каждый цикл должен замеряться независимо. состояние памяти на момент начала обработки может иметь значение.
3. в общем, забить и юзать то, что удобней.