Я хотел бы узнать больше о оптимизации кода низкого уровня и о том, как использовать базовую архитектуру машины. Я ищу хорошие рекомендации о том, где читать эту тему.
Подробнее:
Меня интересует оптимизация в контексте научных вычислений (которые много хрустят, но не только) на языках низкого уровня, таких как C/С++. Меня особенно интересуют методы оптимизации, которые не очевидны, если у вас нет хорошего понимания того, как работает машина (чего я еще не знаю).
Например, ясно, что лучший алгоритм быстрее, не зная ничего о машине, на которой он работает. Совершенно очевидно, что имеет значение, если сначала пройти через столбцы или строки матрицы. (Лучше прокручивать матрицу так, чтобы элементы, которые хранятся в соседних местах, считываются последовательно.)
Приветствуем основные советы по теме или указателям на статьи.
Ответы
Получил ответы с большим количеством великих указателей, намного больше, чем когда-либо успел прочитать. Вот список всех из них:
- Кулинарная книга по оптимизации программного обеспечения от Intel (книга)
- Что каждый программист должен знать о памяти (pdf-книга)
- Напишите отличный код, Том 2: Думая о низком уровне, Написание высокого уровня (книга)
- Ресурсы оптимизации программного обеспечения от Agner Fog (пять подробных руководств по pdf)
Мне нужно немного времени, чтобы решить, какой из них использовать (не имея времени для всех).