Возник такой вопрос в ходе эксперимента. Захотелось просто ради интереса написать перемножение матриц на Си и сравнить с чужой реализацией. Написал, начал сравнивать увидел, что мой вариант сильно медленнее, подглядел в чужом коде транспонирование матрицы перед умножением, добавил, начал сравнивать снова. И заметил интересный момент мой вариант и вариант attractivechaos с одинаковыми оптимизациями выполняются за примерно одно и то же время(ещё бы, после того как я подглядел транспонирование разница в коде стала минимальной). За исключением варианта -Ofast или комбинации -O3 и -ffast-math. Тут вариант attractivechaos ускоряется в 2 раза по сравнению с -O2 и -ffast-math, а мой нет.
Собственно вопрос: почему? И ещё более интересный: где почитать о том как писать код для наиболее эффективной оптимизации компилятором?
P.S. тестил и GCC, и Clang. Результат и там, и там одинаковый.