Benchmark wiskundige software/libraries
Geplaatst: zo 13 dec 2009, 20:55
Vanmiddag begon ik enkel Benchmark tests. Ik liet (voorlopig althans) Python (+numpy), Matlab en GNU octave de inverse nemen van een 100x100 matrix. Ik kwam tot volgende resultaten:
<div style="line-height: 0px;"><table cellpadding="0" cellspacing ="0" border="1" class="bbc">[tr][td]Test\software[/td][td]Python[/td][td]Octave[/td][td]Matlab[/td][/tr][tr][td]1[/td][td]0,037[/td][td]0,250[/td][td]0,049[/td][/tr][tr][td]2[/td][td]0,072[/td][td]0,188[/td][td]0,043[/td][/tr][tr][td]3[/td][td]0,073[/td][td]0,203[/td][td]0,038[/td][/tr][tr][td]4[/td][td]0,073[/td][td]0,203[/td][td]0,032[/td][/tr][tr][td]5[/td][td]0,073[/td][td]0,188[/td][td]0,020[/td][/tr][tr][td]6[/td][td]0,073[/td][td]0,203[/td][td]0,020[/td][/tr][tr][td]7[/td][td]0,073[/td][td]0,203[/td][td]0,021[/td][/tr][tr][td]8[/td][td]0,074[/td][td]0,188[/td][td]0,020[/td][/tr][tr][td]9[/td][td]0,074[/td][td]0,203[/td][td]0,024[/td][/tr][tr][td]10[/td][td]0,074[/td][td]0,188[/td][td]0,021[/td][/tr][tr][td] [/td][td] [/td][td] [/td][td] [/td][/tr][tr][td]Gem[/td][td]0,070[/td][td]0,202[/td][td]0,029[/td][/tr][tr][td]Stdev[/td][td]0,011[/td][td]0,019[/td][td]0,011[/td][/tr]</table>
Benchmark op windows XP SP3 1,6GHz 1G ram
(tijd in seconden)
Voorlopige conclusie is dat Matlab het snelst is maar dat Python niet moet onderdoen. Octave presteert ondermaats vind ik. Als iemand zin heeft de tests te herhalen met andere software: In Matlab & Octave gebruikte ik volgende code:
In Python:
Nu is mijn vraag eigenlijk deels wiskundig. Kan ik uit zulk één test afleiden welke software uit beste presteert voor matrixrekenen? Inverse oplossen is vrij cruciaal voor veel eindige elementen software. (Andere methoden voor het oplossen van B=AX is uiteraard ook mogelijk en zelfs efficiënter)
Zie ook http://www.scipy.org/PerformancePython
<div style="line-height: 0px;"><table cellpadding="0" cellspacing ="0" border="1" class="bbc">[tr][td]Test\software[/td][td]Python[/td][td]Octave[/td][td]Matlab[/td][/tr][tr][td]1[/td][td]0,037[/td][td]0,250[/td][td]0,049[/td][/tr][tr][td]2[/td][td]0,072[/td][td]0,188[/td][td]0,043[/td][/tr][tr][td]3[/td][td]0,073[/td][td]0,203[/td][td]0,038[/td][/tr][tr][td]4[/td][td]0,073[/td][td]0,203[/td][td]0,032[/td][/tr][tr][td]5[/td][td]0,073[/td][td]0,188[/td][td]0,020[/td][/tr][tr][td]6[/td][td]0,073[/td][td]0,203[/td][td]0,020[/td][/tr][tr][td]7[/td][td]0,073[/td][td]0,203[/td][td]0,021[/td][/tr][tr][td]8[/td][td]0,074[/td][td]0,188[/td][td]0,020[/td][/tr][tr][td]9[/td][td]0,074[/td][td]0,203[/td][td]0,024[/td][/tr][tr][td]10[/td][td]0,074[/td][td]0,188[/td][td]0,021[/td][/tr][tr][td] [/td][td] [/td][td] [/td][td] [/td][/tr][tr][td]Gem[/td][td]0,070[/td][td]0,202[/td][td]0,029[/td][/tr][tr][td]Stdev[/td][td]0,011[/td][td]0,019[/td][td]0,011[/td][/tr]</table>
Benchmark op windows XP SP3 1,6GHz 1G ram
(tijd in seconden)
Voorlopige conclusie is dat Matlab het snelst is maar dat Python niet moet onderdoen. Octave presteert ondermaats vind ik. Als iemand zin heeft de tests te herhalen met andere software: In Matlab & Octave gebruikte ik volgende code:
Code: Selecteer alles
for i=1:10
tic
a=dlmread('100x100.csv',';');
b=a^-1;
toc
end
Code: Selecteer alles
from numpy import matrix
from timeit import *
t = Timer()
f=open("100x100.csv")
a=f.readlines()
A=matrix([[float(j) for j in i.split(";")] for i in a])
B=A**-1
print t.timeit()
Zie ook http://www.scipy.org/PerformancePython