Как точно посчитать за какой время выполняется цикл?
1. В зависимости от параметров сборки этот цикл может превращаться в ноль, тк в нём нет побочных эффектов (это стандарт)
2. На компьютере кроме твоей программы выполняется ещё несколько десятков других, по тому ОС будет в какие-то моменты твою программу ставить на паузу, чтобы дать процессорное время для другой программы.
3. Частота современных процессоров не постоянна, так что это тоже может влиять

Если ты хочешь написать бенчмарк, то тебе надо запустить один и тот же код несколько тысяч раз и посчитать хотябы среднее время, а в идеале ещё stddev и stderr
Современные процессоры с большим количеством ядер, сложной многоуровневой системой кеширования в процессоре и многозадачные операционные системы, занимающиеся чем то не особо нужным пользователям, превращают такой простой тест в рулетку.

Да, Армянское Радио правильно сказал, конкретно это код скорее всего оптимизируется до ничего неделания, так что нужно добавить хоть что то или к примеру в качестве итератора i использовать определенную глобально переменную с пометкой external (тогда компилятор ее точно не выкинет и будет добросовестно итерировать ее на единичку)

С другой сторон, а зачем тогда нужен такой тест, в зависимости от кучи условий этот цикл будет выглядеть в ассемблере по разному и давать разный результат по производительности

Что можно сделать с неодинаковыми результатами - настроить affinity для процесса на одно ядро и повысить приоритет, в этом случае шансы что процесс будет вытеснен будут минимальны... и кстати, антивирус отключи, вот уж процесс, добавляет неопределенности в машину.

p.s. попробуй собрать свой пример не в msvc а в gcc и/или clang llvm (да еще в разных операционках win/linux), результаты тебя удивят