На моих курсах по численному анализу я научился анализировать эффективность алгоритмов, подсчитывая количество операций с плавающей запятой (флоп), которые им требуются, в зависимости от размера проблемы. Например, в тексте Trefethen & Bau о числовой линейной алгебре есть даже трехмерные изображения подсчетов флопа.
Сейчас модно говорить, что «флопы свободны», потому что задержка памяти для извлечения чего-либо, не находящегося в кеше, намного превышает стоимость флопа. Но мы все еще учим студентов считать флопы, по крайней мере, на курсах численного анализа. Должны ли мы учить их считать доступ к памяти? Нужно ли нам писать новые учебники? Или доступ к памяти слишком специфичен для конкретной машины, чтобы тратить на нее время? Какова будет долгосрочная тенденция с точки зрения того, являются ли провалы или доступ к памяти узким местом?
Примечание: некоторые из приведенных ниже ответов, похоже, отвечают на другой вопрос, такой как «Должен ли я одержимо переписать свою реализацию, чтобы сохранить несколько провалов или улучшить производительность кэша?» Но то, что я спрашиваю, больше похоже на « Полезно ли оценивать алгоритмическую сложность с точки зрения арифметических операций или обращений к памяти ?»