Я не совсем понимаю, что делает матричное умножение в С#/.NET(и даже Java) настолько медленным.
Взгляните на этот тест (источник): Попытка найти обновленный ориентир.
Java vs С# vs С++ breakdown http://img411.imageshack.us/img411/9324/perf.gif
Ц # целое число и двойная производительность прокляты близко к С++, скомпилированному с MSVС++. 87% так же быстро и вдвое быстрее и на 99% для 32-битного целого. Я бы сказал, довольно хорошо. Но тогда посмотрим на матричное умножение. Разрыв расширяется до С#, составляющего примерно 19%. Это довольно большое несоответствие, которое я не понимаю. Матричное умножение - всего лишь куча простой математики. Как это происходит так медленно? Разве это не должно быть примерно так же быстро, как эквивалентное число простых операций с плавающей запятой или целым числом?
Это особенно касается игр и XNA, где матрица и векторная производительность имеют решающее значение для таких вещей, как физические движки. Некоторое время назад Моно добавила поддержку инструкций SIMD через отличные векторные и матричные классы. Он закрывает пробел и делает Mono быстрее, чем написанный вручную С++, хотя и не такой быстрый, как С++ с SIMD. (источник)
Сравнение умножения матрицы http://img237.imageshack.us/img237/2788/resultse.png
Что здесь происходит?
Изменить: Присматриваясь, я неправильно читаю второй график. С# выглядит довольно близко. Является ли первый тест просто чем-то ужасным? Извините, я пропустил номер версии в первом тесте. Я схватил его за удобную ссылку, потому что "линейная алгебра С# медленна", которую я всегда слышал. Я попытаюсь найти другую.