В своем разговоре несколько дней назад в Facebook - slides, видео, переговоры Андрея Александреску об общих интуициях, которые могут оказаться неправильными. Для меня очень интересный момент появился на Слайде 7, где он утверждает, что предположение "Меньше инструкций = более быстрый код" неверно, и больше инструкций не обязательно означает более медленный код.
Вот моя проблема: качество звука в его разговоре (около 6: 20 минут) не так уж хорошо, и я не очень хорошо понимаю это объяснение, но из того, что я получаю, заключается в том, что он сравнивает устаревшие инструкции с оптимальностью алгоритм на уровне производительности.
Однако, по моему мнению, это невозможно сделать, потому что это два независимых структурных уровня. Инструкции (особенно на самом деле отставные инструкции) являются одной очень важной мерой и в основном дают вам представление о производительности для достижения цели. Если мы откажемся от латентности инструкции, мы можем обобщить, что меньше выбывших команд = более быстрый код. Теперь, конечно, бывают случаи, когда алгоритм, выполняющий сложные вычисления внутри цикла, даст лучшую производительность, даже если он выполняется внутри цикла, потому что он рано сломает цикл (подумайте об обходе графика). Но разве было бы более полезно сравнивать с алгоритмами на уровне сложности, а не говорить, что этот цикл содержит больше инструкций и лучше другого? С моей точки зрения, лучший алгоритм в конце концов будет иметь меньше отставших команд.
Может кто-нибудь, пожалуйста, помогите мне понять, куда он идет с его примером, и как может быть случай, когда (значительно) более отставные инструкции приводят к лучшей производительности?