Я работаю над компилятором и написал оптимизацию, которая фактически замедлила мой код! Изучив его, я обнаружил, что там генератор кода решил использовать дескриптор (двойная ссылка в случае нашего компилятора), когда моя оптимизация была отключена, и указатель на дескриптор, когда моя оптимизация была включена! Это привело к появлению еще одной инструкции отмены ссылки во втором случае при каждом обращении к массиву.
Но эта единственная инструкция вызвала удивительное замедление времени выполнения кода на 32%. Я подозреваю, что это связано с конвейерной обработкой инструкций, поскольку эта дополнительная де-ссылка вызывает 3 зависимые инструкции, которые могут объяснить замедление.
Мне нужно продемонстрировать то же самое, и я пытаюсь получить больше информации о конвейерной обработке, и было бы здорово, если бы кто-то мог предложить несколько хороших материалов по конвейерной обработке команд, полезных имитаторов архитектуры и визуализаторов конвейера.