Когда я пишу какой-то жесткий цикл, который должен работать быстро, меня часто беспокоят мысли о том, как будет вести себя прогнозирование ветвлений процессора. Например, я стараюсь избегать наличия оператора if в самом внутреннем цикле, особенно с результатом, который не является единообразным (скажем, оценивается как true или false randomly).
Я имею тенденцию делать это из-за довольно общего знания о том, что процессор предварительно набирает инструкции, и если оказалось, что он неправильно предсказал ветку, то предварительная выборка бесполезна.
Мой вопрос: действительно ли это проблема с современными процессорами? Насколько хорошо может ожидать прогнозирование отрасли?
Какие шаблоны кодирования можно использовать для улучшения?
(Ради обсуждения, предположим, что я за пределами фазы "ранней оптимизации - это корень всех злых" )