[Python-de] Re: Laufzeit Python List vs String vs Perl

Peter Otten __peter__ at web.de
Sam Jun 19 12:42:54 CEST 2004


kgm wrote:

> durch Jans List-Optimierung angeregt, habe ich nochmal
> String-Concatination mit der Listen-Lösung verglichen, Source [1]:
> 
> Python: Anzahl=100000
> Laufzeit String: 192.2077 sec
> Laufzeit Liste: 0.4875 sec
> 
> Zeigt, wie lahm die Strings sind :-(
> 
> Das gleiche jetzt nochmal in einer Perl-Variante [2], natürlich auf dem
> gleichen Rechner gemessen:
> 
> Perl: Anzahl=100000
> Laufzeit String: 0.220316
> Laufzeit Liste: 0.260375
> 
> kein Schreibfehler, der Unterschied zu Python ist so groß :-(

Hier eine weitere Variante, die map() verwendet. listjoin() habe ich nur zum
Vergleich aufgenommen.

<intlist.py>
def listjoin(anzahl):
    liste = []
    for i in xrange(anzahl):
        liste.append(str(i)+' ')
    return "".join(liste)

def mapjoin(anzahl):
    liste = map(str, xrange(anzahl))
    if anzahl > 0:
        liste.append("")
    return " ".join(liste)
</intlist.py>

$ timeit.py -s"from intlist import listjoin as f" "f(100)"
1000 loops, best of 3: 193 usec per loop
$ timeit.py -s"from intlist import mapjoin as f" "f(100)"
10000 loops, best of 3: 95.5 usec per loop

Und falls das nicht reicht, gibt's ja immer noch psyco...

Ich vermute das größte Potential für eine Geschwindigkeitsoptimierung, von
der alle Programme profitieren können, liegt derzeit bei Funkionsaufrufen.

Peter