Возьмем произведение двух матриц 3x3 A*B=C
. Наивно это требует 27 умножений с использованием стандартного алгоритма . Если бы вы были умны, вы могли бы сделать это, используя только 23 умножения, результат, найденный в 1973 году Laderman. Эта техника включает в себя сохранение промежуточных этапов и их правильное сочетание.
Теперь давайте исправим язык и тип, например С++ с элементами double
. Если алгоритм Ладермана был жестко запрограммирован по сравнению с простым двойным циклом, можно ли ожидать, что производительность современного компилятора будет устранять различия в алгоритмах?
Примечания по этому вопросу: Это сайт программирования, и вопрос задается в контексте наилучшей практики для критического во времени внутреннего цикла; это преждевременная оптимизация. Советы по внедрению очень приветствуются в качестве комментариев.