Почему умножение матриц в .NET так медленно?

Я не совсем понимаю, что делает умножение матриц в C # /. NET (и даже Java) таким медленным.

Посмотрите на этот тест (источник): Пытаюсь найти обновленный тест.

Разбивка Java против C # и C ++ http://img411.imageshack.us/img411/9324/perf.gif

Целочисленная и двойная производительность C # чертовски близка к C ++, скомпилированному с MSVC ++. 87% быстрее для двойного и 99% быстрее для 32-разрядного целого числа. Довольно чертовски хорошо, я бы сказал. Но тогда посмотрите на умножение матриц. Разрыв в C # увеличивается примерно на 19%. Это довольно большое несоответствие, которое я не понимаю. Умножение матриц - это просто математика. Как это так медленно? Разве это не должно быть примерно так же быстро, как эквивалентное число простых операций с плавающей запятой или целочисленных?

Это особенно касается игр и XNA, где производительность матрицы и вектора важна для таких вещей, как физические движки. Некоторое время назад Mono добавил поддержку SIMD-инструкций через несколько классных векторных и матричных классов. Это сокращает разрыв и делает Mono быстрее, чем рукописный C ++, хотя и не так быстро, как C ++ с SIMD. (источник)

Сравнение умножения матриц http://img237.imageshack.us/img237/2788/resultse.png

Что тут происходит?

Изменить: глядя ближе, я неправильно прочитал второй график. C # выглядит довольно близко.Первый тест просто делает что-то ужасно неправильно? Извините, я пропустил номер версии на первом тесте. Я взял это как удобный справочник для "C # линейная алгебра медленная", которую я всегда слышал. Я постараюсь найти другого.

Ответы на вопрос(4)

Ваш ответ на вопрос