Non capisco cosa rende la moltiplicazione della matrice in C# /. NET (e anche Java) così lenta.Perché la moltiplicazione della matrice in .NET è così lenta?
Date un'occhiata a questo punto di riferimento (
source):
Cercando di trovare un punto di riferimento aggiornato.
Java vs C# vs C++ breakdown http://img411.imageshack.us/img411/9324/perf.gif
intero e doppia performance C# s 'è dannatamente vicino al C++ compilato con MSVC++. 87% più veloce per il doppio e 99% più veloce per i numeri interi a 32 bit. Abbastanza dannatamente bene, direi. Ma poi guarda la moltiplicazione della matrice. Il divario si allarga a C# di circa il 19% più velocemente. Questa è una discrepanza piuttosto grande che non capisco. La moltiplicazione della matrice è solo un mucchio di matematica semplice. Come sta diventando così lento? Non dovrebbe essere approssimativamente veloce come un numero equivalente di semplici operazioni in virgola mobile o intero?
Questo è particolarmente un problema con i giochi e con XNA, dove le prestazioni di matrice e vettori sono fondamentali per cose come i motori fisici. Qualche tempo fa, Mono ha aggiunto il supporto per le istruzioni SIMD attraverso alcune classi di vettori e matrici. Chiude il gap e rende Mono più veloce del C++ scritto a mano, sebbene non veloce come il C++ con SIMD. (source)
Matrix multiplication comparison http://img237.imageshack.us/img237/2788/resultse.png
cosa sta succedendo qui?
Modifica: Guardando più vicino, ho letto male il secondo grafico. C# sembra abbastanza vicino.
Il primo benchmark sta solo facendo qualcosa di terribilmente sbagliato?
Siamo spiacenti, ho perso il numero di versione sul primo punto di riferimento. L'ho preso come riferimento pratico per "l'algebra lineare C# è lenta" che ho sempre sentito. Proverò a trovarne un altro.
C# Versione + Opzioni: .Net Framework 1.1.4322 Uh ... non c'è una versione più recente? – GalacticJello
* si siede e aspetta di vedere cosa ha da dire JonSkeet sull'argomento * :-) – WestDiscGolf
Il test è stato eseguito con VS 2003. (Si noti anche la versione C++). Da qui l'antica versione di .net. – cHao