const int N = 10'000'000;
    std::vector<int> data(N, 1);

    long long total_time = 0;

    for (int trial = 1; trial <= 100; ++trial)
    {
        std::chrono::high_resolution_clock::time_point loop_start = std::chrono::high_resolution_clock::now();
        for (int i = 0; i < N; ++i)
        {
            data[i] = data[i] * 2;
        }
        std::chrono::high_resolution_clock::time_point loop_end = std::chrono::high_resolution_clock::now();
        long long loop_duration = std::chrono::duration_cast<std::chrono::microseconds>(loop_end - loop_start).count();
        total_time += loop_duration;

        std::printf("Trial %d: %lld microseconds\tPrefix sum : %lld\n", trial, loop_duration, total_time);
    }

캐시 히트랑 관련해서 성능 체크 하고 있는데요.
'배열을 첫 번째로 순회하면 캐시 미스가 발생해서 캐시의 이점을 받지 못할거고, 두 번째 순회부터 캐시 히트가 발생해서 성능이 좋아질거다'가 제 가설입니다.
그런데 결과는 그렇지 않더라고요?

Trial 1: 73717 microseconds Prefix sum : 73717 Trial 2: 74140 microseconds Prefix sum : 147857 Trial 3: 62956 microseconds Prefix sum : 210813 Trial 4: 64439 microseconds Prefix sum : 275252 Trial 5: 58403 microseconds Prefix sum : 333655 Trial 6: 57915 microseconds Prefix sum : 391570 Trial 7: 57785 microseconds Prefix sum : 449355 Trial 8: 57691 microseconds Prefix sum : 507046 Trial 9: 57527 microseconds Prefix sum : 564573 Trial 10: 57817 microseconds Prefix sum : 622390 예상했던 것과 비슷한 결과가 나오기도 하지만

Trial 1: 56419 microseconds     Prefix sum : 56419
Trial 2: 58292 microseconds     Prefix sum : 114711
Trial 3: 58812 microseconds     Prefix sum : 173523
Trial 4: 58781 microseconds     Prefix sum : 232304
Trial 5: 59098 microseconds     Prefix sum : 291402
Trial 6: 72381 microseconds     Prefix sum : 363783
Trial 7: 74246 microseconds     Prefix sum : 438029
Trial 8: 74776 microseconds     Prefix sum : 512805
Trial 9: 79723 microseconds     Prefix sum : 592528
Trial 10: 71451 microseconds    Prefix sum : 663979 이런 결과도 나오더라고요.

이유를 모르겠습니다... 제가 실수하고 있는 부분이 있을까요?