[Python-de] Re: Re: Re: 1,2,3,5,7,8,9 -> "1-3,5,7-9"

Alexander 'boesi' Bösecke boesi.josi at gmx.net
Mit Jun 23 09:46:26 CEST 2004


Hi

Am 22.06.2004 21:24:09 schrieb Peter Otten:

> Ich habe mir Rene_x() gerade angesehen. Ich habe doch zusätzlichen
> Speicherbedarf - für das Tupel zur Stringformatierung. Vielleicht kommt
> Linux damit besser zurecht.

Hmm war das nicht so, dass Linux so spaet wie moeglich mit auslagern
anfaengt, waerhend Windows das staendig tut? Aber ich glaub nicht, dass
der Speicher das Problem ist, sofern man genug davon hat. Soweit ich dem
Task-Manager vertrauen kann, verbraten alle Algorithmen in Abhaengigkeit
von n etwa gleich viel Speicher (bei n=1000000 ca 90MB). Und die
Auslagerungsstrategie sollte nur bei der ersten Runde eine Rolle spielen
(wobei Linux in diesem Fall eigentlich schlechter abschneiden muesste).

> Falls Peter_exp() besser skaliert, wäre die Ursache für den
> Performanceeinbruch wohl geklärt.

Anzahl Listenelemente: 10000
Anzahl Loops: 100
Laufzeit pro Loop im Schnitt:
  boesi     :    0.0164 sec (Alexander B÷secke)
  Peter     :    0.0187 sec (Peter Otten - sauber)
  Peter2    :    0.0148 sec (Peter Otten - schnell)
  Peter3    :    0.0129 sec (Peter Otten - schnell optimiert)
Anzahl Listenelemente: 100000
Anzahl Loops: 100
Laufzeit pro Loop im Schnitt:
  boesi     :    0.1796 sec (Alexander B÷secke)
  Peter     :    0.1965 sec (Peter Otten - sauber)
  Peter2    :    0.1554 sec (Peter Otten - schnell)
  Peter3    :    0.1356 sec (Peter Otten - schnell optimiert)

Bis hier skalieren alle Algorithmen mehr oder weniger gleich
gut/schlecht.

Anzahl Listenelemente: 1000000
Anzahl Loops: 100
Laufzeit pro Loop im Schnitt:
  boesi     :    1.8804 sec (Alexander B÷secke)
  Peter     :    3.2440 sec (Peter Otten - sauber)
  Peter2    :    2.8126 sec (Peter Otten - schnell)
  Peter3    :    2.6305 sec (Peter Otten - schnell optimiert)
  
Ab jetzt nur noch 3 Loops, weil ich die Mail ja nicht erst uebermorgen
abschicken will.

Anzahl Listenelemente: 3000000
Anzahl Loops: 3
Laufzeit pro Loop im Schnitt:
  boesi     :    5.8073 sec (Alexander B÷secke)
  Peter     :   17.1955 sec (Peter Otten - sauber)
  Peter2    :   16.0502 sec (Peter Otten - schnell)
  Peter3    :   15.3162 sec (Peter Otten - schnell optimiert)
Anzahl Listenelemente: 5000000
Anzahl Loops: 3
Laufzeit pro Loop im Schnitt:
  boesi     :   12.6489 sec (Alexander B÷secke)
  Peter     :   41.3377 sec (Peter Otten - sauber)
  Peter2    :   39.4509 sec (Peter Otten - schnell)
  Peter3    :   38.6418 sec (Peter Otten - schnell optimiert)
  
Hier reichen meine 512MB Arbeitsspeicher nicht mehr aus und es wird
massiv auf die Platte zugegriffen - so massiv, dass die CPU-Last des
Python-Prozesses teilweise gegen 0 geht.
 
Anzahl Listenelemente: 10000000
Anzahl Loops: 1
Laufzeit pro Loop im Schnitt:
  boesi     :  149.6341 sec (Alexander B÷secke)
  Peter     :  173.1672 sec (Peter Otten - sauber)
  Peter2    :  196.2615 sec (Peter Otten - schnell)
  Peter3    :  192.8397 sec (Peter Otten - schnell optimiert)

Interessanterweise skaliert deine saubere Variante leicht besser als die
beiden anderen.
 
 
cu boesi
-- 
                                                     #1671 : icq-intern
Frueher hattet ihr die Freiheit zu entscheiden   #73628288 : icq-extern 
Heute seid ihr von dieser Entscheidung befreit    boesi111 : aim
                       .-==Report der Magd==-.        i171 : reallife