Springen naar inhoud

Benchmark wiskundige software/libraries


  • Log in om te kunnen reageren

#1

jhnbk

    jhnbk


  • >5k berichten
  • 6905 berichten
  • VIP

Geplaatst op 13 december 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:

Test\softwarePythonOctaveMatlab
10,0370,2500,049
20,0720,1880,043
30,0730,2030,038
40,0730,2030,032
50,0730,1880,020
60,0730,2030,020
70,0730,2030,021
80,0740,1880,020
90,0740,2030,024
100,0740,1880,021
Gem0,0700,2020,029
Stdev0,0110,0190,011
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: Bijlage  100x100.txt   28,37K   44 maal gedownload

In Matlab & Octave gebruikte ik volgende code:
for i=1:10
	tic
	a=dlmread('100x100.csv',';');
	b=a^-1;
	toc
end

In Python:
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.

Dit forum kan gratis blijven vanwege banners als deze. Door te registeren zal de onderstaande banner overigens verdwijnen.

#2

Bart

    Bart


  • >5k berichten
  • 7224 berichten
  • VIP

Geplaatst op 13 december 2009 - 22:36

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

#3

jhnbk

    jhnbk


  • >5k berichten
  • 6905 berichten
  • VIP

Geplaatst op 14 december 2009 - 08:59

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.

#4

Bart

    Bart


  • >5k berichten
  • 7224 berichten
  • VIP

Geplaatst op 14 december 2009 - 09:34

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

#5

jhnbk

    jhnbk


  • >5k berichten
  • 6905 berichten
  • VIP

Geplaatst op 14 december 2009 - 09:47

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.





0 gebruiker(s) lezen dit onderwerp

0 leden, 0 bezoekers, 0 anonieme gebruikers

Ook adverteren op onze website? Lees hier meer!

Gesponsorde vacatures

Vacatures