Цикл можно разбить на его «примитивные операции», повторно приведя его к виду while
:
int i = 0;
while (i < n)
{
print test;
i = i + 1;
}
Или, более точно:
loop:
if (i < n) goto done
print test
i = i + 1
goto loop
done:
Youзатем можно увидеть, что для каждой итерации есть сравнение, приращение и goto
.Это просто накладные расходы.Вы должны добавить к этому все, что делается в цикле.Если print
считается «примитивной операцией», то у вас есть:
- n + 1 сравнений
- n вызовов с шагом
print
- n
- n + 1
goto
инструкции (одна из которых разветвляется из цикла после завершения)
Теперь то, как все это преобразуется в машинный код, сильно зависит от компилятора,библиотека времени выполнения, операционная система и целевое оборудование.И, возможно, другие вещи.