А если пользоваться, как надо, BLAS, то разницы не будет и с питоном.
А она (хотя и не вся) уже встроена в Фортран. Тот же matmul - это не просто умножение в два цикла.
Кстати, в приведённом вами сравнении даже код посмотреть нельзя. Может, там сишная версия написана очень криво?..
В принципе, конечно, не исключено, но личность автора делает это предположение маловероятным.
То, что фортран быстрее -- это распространённый миф, который появился из-за того, что старые компиляторы си не умели хорошо оптимизировать код. Потом разница понемногу сошла на нет, а миф остался.
Это не такой уж миф. У C есть как минимум одна особенность, принципиальо ограничивающая оптимизацию - работа с указателями. Из-за нее почти всегда невозможно гарантировать отсутствие побочных эффектов у тех или иных участков кода.
Да, на фортране гораздо удобнее писать всякие матричные вычисления и комплексную алгебру так как это всё есть в языке. Но скорость работы -- это миф.
Бессмысленно оценивать скорость работы "просто так". Как я уже писал выше, выжать максимальную производительность из C/C++, безусловно, можно, и спорить с этим никто не пытается. Вопрос в том, какой ценой это будет сделано. Удобство работы с матричными и векторными операциями (а это 99% вычислительной математики) - это, в конечном счете, возможность быстро написать на Фортране программу, которая будет работать как минимум не медленнее куда более сложной программы на C. А при примерно равных затратах времени на написание вычислительная программа на Фортране почти всегда будет работать быстрее.
-- Вс дек 06, 2009 19:44:33 --А вы С++ знаете?
Да.
Т.е. по вашему ограничение С++, что в нем нет matmul (и т.п.)?
Я не называл это "ограничениями". Скорее это неудобство - но да, именно оно. И собственно matmul - это только один небольшой элемент. Я им попользовался, разбирая пример c N-body, но даже там же был и еще один - векторные вычисления.
Например, пусть мне надо работать с матрицами спец. вида (блочная, диагональная...), для которых существуют более лучшие алгоритмы. matmul сама "догадается"?
Конкретно для блочных и диагональных - нет. А вот выбор оптимального варианта для матрицы общего вида (в зависимости от размера, возможности параллелизации и т.д.) - да.