Gebruikersavatar
jhnbk
Artikelen: 0
Berichten: 6.905
Lid geworden op: za 16 dec 2006, 09:10

Benchmark wiskundige software/libraries

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:
100x100
(28.37 KiB) 105 keer gedownload
In Matlab & Octave gebruikte ik volgende code:

Code: Selecteer alles

for i=1:10

tic

a=dlmread('100x100.csv',';');

b=a^-1;

toc

end
In Python:

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()
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
Het vel van de beer kunnen verkopen vraagt moeite tenzij deze dood voor je neervalt. Die kans is echter klein dus moeten we zelf moeite doen.
Gebruikersavatar
Bart
Artikelen: 0
Berichten: 7.224
Lid geworden op: wo 06 okt 2004, 22:42

Re: Benchmark wiskundige software/libraries

Het inlezen van de file moet je buiten je benchmark doen.

Bij Ax=b ga je nooit de inverse van A nemen omdat, zoals je al zegt, er snellere methodes zijn. De benchmark is in dat opzicht zinloos. Matlab is bijvoorbeeld heel sterk in het oplossen van Ax = b (je kunt b / A schrijven om x te vinden)
If I have seen further it is by standing on the shoulders of giants.-- Isaac Newton
Gebruikersavatar
jhnbk
Artikelen: 0
Berichten: 6.905
Lid geworden op: za 16 dec 2006, 09:10

Re: Benchmark wiskundige software/libraries

Matlab:

Elapsed time is 0.009887 seconds.

Elapsed time is 0.009759 seconds.

Elapsed time is 0.008594 seconds.

Elapsed time is 0.004649 seconds.

Elapsed time is 0.004490 seconds.

Elapsed time is 0.004452 seconds.

Elapsed time is 0.004472 seconds.

Elapsed time is 0.004528 seconds.

Elapsed time is 0.004556 seconds.

Elapsed time is 0.004536 seconds.

Python:

0.036383455517

0.0365347182901

0.0362466597919

0.0363384419237

0.0360924271116

0.0362205681072

0.0363641361208

0.0360395912628

0.0358953707697

0.036148735352

Octave:

Elapsed time is 0 seconds.

Elapsed time is 0 seconds.

Elapsed time is 0.015625 seconds.

Elapsed time is 0 seconds.

Elapsed time is 0 seconds.

Elapsed time is 0 seconds.

Elapsed time is 0.015625 seconds.

Elapsed time is 0 seconds.

Elapsed time is 0 seconds.

Elapsed time is 0.015625 seconds.

Als ik het inlezen niet meetel komt Python er het slechtste uit al is de "0" output van octave ook vreemd.
Het vel van de beer kunnen verkopen vraagt moeite tenzij deze dood voor je neervalt. Die kans is echter klein dus moeten we zelf moeite doen.
Gebruikersavatar
Bart
Artikelen: 0
Berichten: 7.224
Lid geworden op: wo 06 okt 2004, 22:42

Re: Benchmark wiskundige software/libraries

Als ik het inlezen niet meetel komt Python er het slechtste uit
Dat is niet raar. Python is sneller in file handling dan Matlab dat is. Vandaar dat je dat ook niet in je benchmark moet meenemen.
al is de "0" output van octave ook vreemd.
Lijkt alsof Octave problemen met zijn timer (tic/toc) heeft
If I have seen further it is by standing on the shoulders of giants.-- Isaac Newton
Gebruikersavatar
jhnbk
Artikelen: 0
Berichten: 6.905
Lid geworden op: za 16 dec 2006, 09:10

Re: Benchmark wiskundige software/libraries

Mja, zolang de berekeningen in python onder 1/10 seconde blijven denk ik dat python ook een sterke taal voor numerieke toepassingen is.

Op zich moet de programmeur de code zelf al wat optimaliseren.
Het vel van de beer kunnen verkopen vraagt moeite tenzij deze dood voor je neervalt. Die kans is echter klein dus moeten we zelf moeite doen.

Terug naar “Informatica en programmeren”