
Python Geschwindigkeit optimieren
November 5, 2008Ich habe zwar schon sehr viel Gutes von Psyco gehört, aber dass es so effektiv sein kann, hätte ich wirklich nicht gedacht. Psyco kompiliert bestimmte Funktionen, die sehr rechenintensiv sind, und Python schneller laufen zu lassen, und das funktioniert auch ganz gut wie man an folgendem Benchmark der SelectionSort Funktion mit 20.000 Elementen gut sehen kann:
charly@lucy:~/py/tests$ time python selectionSortNormal.py
Liste fertig sortiert
real 0m49.638s
user 0m49.579s
sys 0m0.012s
charly@lucy:~/py/tests$ time python selectionSortPsyco.py
Liste fertig sortiert
real 0m3.453s
user 0m3.396s
sys 0m0.012s
Laut eigenen Angaben werden Programme durchschnittlich 4-40 mal schneller durch Psyco, und man muss noch nichtmal wirklich was dafür tun. Alles was man braucht ist:
charly@lucy:~/py sudo apt-get install python-psyco
>>> import psyco
>>> psyco.full()
Der Code für das Benchmark ist folgender:
#Program to benchmark psyco import random, psyco def selectionsort(seq): for k in range(len(seq) - 1): j = i = k for i in range(k, len(seq)): if seq[i] < seq[j]: j = i seq[j], seq[k] = seq[k], seq[j] return seq def getLargeList(elements): list = [] for rand in range(elements): rand = random.randint(1,elements) list.append(rand) return list psyco.full() result = selectionsort(getLargeList(20000)) print "Liste fertig sortiert"
Mehr zu Psyco gibt es in den offiziellen Docs: http://psyco.sourceforge.net/psycoguide/

Whoa.. klingt definitiv so als müsste ich mir das mal dringend ansehen.
[...] ist der Code zusätzlich mit Psyco optimiert, was die Geschwindigkeit von 0.88 auf auf 0.33 Sekunden [...]