Elem, kod mene se cela stvar izvrsava za 32 sec (VS 2008, Intel Quad Core na 3 GHz, Vista x64)
Medjutim, iz znatizelje sam promenio redosled pristupa matrici:
Code:
public static void mmult(int rows, int cols, int[,] m1, int[,] m2,
int[,] m3)
{
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < cols; j++)
{
int val = 0;
for (int k = 0; k < cols; k++)
{
val += m1[k,i] * m2[j,k];
}
m3[j,i] = val;
}
}
}
Sada se kod izvrsava za 26 sekundi... kako je matrica kvadratna nema razlike, ali ocigledno ima razlike u nacinu na koji su smestene matrice u C# i njihovom pristupanju u primeru :)
Javu na zalost nemam (niti imam nameru da instaliram ;-) pa da izmerim koliko se to kod mene izvrsava u Javi.
Kao sto rekoh - da je ovde ocigledno problem nacin na koji je alocirana memorija za matrice u C# portu i nacin na koji joj se pristupa u ovom primeru... blagog pojma nemam o C#-u pa ne bih to da komentarisem, ali nesto mi govori da je to moguce izvesti na bolji nacin :-)
@edit - Caslav je napisao kako se to radi u C-u, na tako nesto sam ciljao i u C# ali kako ne poznajem taj jezik bolje da neko strucniji to napise :)
DigiCortex (ex. SpikeFun) - Cortical Neural Network Simulator:
http://www.digicortex.net/node/1 Videos:
http://www.digicortex.net/node/17 Gallery:
http://www.digicortex.net/node/25
PowerMonkey - Redyce CPU Power Waste and gain performance! -
https://github.com/psyq321/PowerMonkey