h1

Python Geschwindigkeit optimieren

November 5, 2008

Ich 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/

2 Kommentare

  1. Whoa.. klingt definitiv so als müsste ich mir das mal dringend ansehen.🙂


  2. […] ist der Code zusätzlich mit Psyco optimiert, was die Geschwindigkeit von 0.88 auf auf 0.33 Sekunden […]



Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

%d Bloggern gefällt das: