Полный текст

Что именно делал компилятор: как ассемблер помогает разобраться в производительности кода на C++Отсутствие векторизации в тривиальном цикле снижает пропускную способность в 8 раз из-за совмещения имён указателей. Компилятор применяет инструкции vmovss для скалярных операций, игнорируя регистры ymm, так как стандарт допускает пересечение областей памяти.Анализ листинга выявляет и другие проблемы: внедрение экстренного прерывания в цикл редукции блокирует автовекторизацию, а массив структур (AoS) разрушает непрерывность данных. Использование флагов -O3 не даёт скорости, если структура противоречит паттернам доступа.Выясним, почему абстракции C++ ломают оптимизацию.