Число циклов будет меняться в зависимости от CPU. Так будут и средства их вычисления.
«Цикл процессора» довольно слабо определяется как «время, необходимое для одной простой операции с процессором», причем сложение часто рассматривается как представитель «простой процессорной операции». Иногда «Цикл процессора» задается как обратная тактовая частота. Эти два определения часто могут быть близкими, но не обязательно эквивалентными.
Даже если вы преодолеете двусмысленность того, что означает «цикл ЦП», ни один код не будет просто выполнять добавление (или вычитание или умножение) изолированно. Будут также такие вещи, как оценка или выборка значений операндов, которые могут подсчитываться или не учитываться, а фактическая продолжительность каждой операции (или инструкции) зависит от ЦП.
И тогда есть функции ЦП, такие как конвейерная обработка (так что одна операция может быть начата, а предыдущая - частично завершена), что делает такие измерения, как циклы ЦП, бессмысленными с множеством современных процессоров.
Я извиняюсь за свое незнание (не знаком с C), но не назвал бы метод более чем 1-4 циклами? – Neil
Это не так просто. Во-первых, это зависит от процессора и архитектуры, если у него достаточно целочисленных исполнительных блоков, возможно, он сможет запустить сразу три или даже несколько инструкций. Затем вы заплатите больше изначально за декодирование команд до тех пор, пока не начнет кэширование микроопераций. Кроме того, ветвь в ней может быть предсказана неправильно изначально. Короче говоря, это сильно зависит от множества факторов, сколько циклов потребуется. В любом случае, нет никакой инструкции, которая завершится всего за один цикл на любом современном процессоре. – JustSid
Имейте в виду, что конвейер процессора довольно длинный (и он снова зависит от некоторых факторов, то есть, если микропроцессорный кеш может помочь, или какая именно инструкция). Вы можете получить пропускную способность до 4 инструкций за цикл, но сами инструкции все равно возьмут, скажем, 14 циклов. – JustSid