in 0..100_000_000 {
// вычисления
// ...
if cond {
// ..
}
}
}
Имеет ли смысл сделать две функции под каждый вариант була, чтобы в горячем цикле он каждый раз не проверял условие, или это оптимизируется всё равно?
если ты на PC - то разницы никакой не будет. branch prediction отработает прозрачно для тебя.
Если у тебя условие не меняется в цикле, то компилятор вполне может два цикла сделать для разных условий
Условие не меняется внутри функции, как приходит аргументом, таким и остается. Понял, тогда хорошо.
скорее всего нет (и возможно тебе лучше не давать советы по этой теме). loop invariant code motion - не настолько агрессивная оптимизация, чтобы приводить к дублированию кода.
Но вообще, если есть сомнения — меряй производительность
Ты же написал что не будет разницы, а как тогда этого добьется компилятор если не созданием двух разных циклов?
Branch predictor — это компонент процессора, а не компилятора
Обсуждают сегодня