Frage

LEERLAUF ist mein Lieblings -Python -Redakteur. Es bietet eine sehr schöne und intuitive Python-Shell, die äußerst nützlich für das Testen und Debuggen für Einheiten und einen ordentlichen Debugger ist.

Der im Leerlauf ausgeführte Code ist jedoch wahnsinnig langsam. Mit wahnsinnig meine ich 3 Größenordnungen langsam:

verprügeln

time echo "for i in range(10000): print 'x'," | python

Dauert 0,052s,

LEERLAUF

import datetime
start=datetime.datetime.now()
for i in range(10000): print 'x',
end=datetime.datetime.now()
print end-start

Nimmt:

>>> 0:01:44.853951

Das ist ungefähr 2.000 -mal langsamer.

Irgendwelche Gedanken oder Ideen, wie man das verbessert? Ich denke, es hat etwas mit dem Debugger im Hintergrund zu tun, aber ich bin mir nicht sicher.

Adam

War es hilfreich?

Lösung

Das Problem ist die Textausgabe, nicht der Debugger.

Ich habe es gerade mit meinem Q6600 -System (3GHz übertaktet) versucht und meine Zahlen sind noch schlechter. Es ist jedoch leicht zu erkennen, dass sie den mehr Ausgangstext hinzufügen werden.

Ich habe versucht, es mit zu laufen

1000 Iterationen => 7,8 Sek. 2000 Iterationen => 28,5 Sek. 3000 Iterationen => 70 Sek.

Ich habe in der Vergangenheit einige Tk -Sachen mit niedrigem Level gemacht und ich weiß, dass das TKText -Widget den Text in einer BTree -Struktur hält. Das Anheben von Text einem Charakter eine Zeit ist eine der schlimmsten Möglichkeiten, aber dies scheint das zu sein, was Leerlauf tut. Der normale Weg besteht darin, mehr Daten zu fangen und einen größeren Textback anzuhängen.

Erstaunlicherweise, wenn Sie Druck 'x n' schreiben, ist die Ausgabe viel schneller. 3000 Iterationen in 7 Sekunden und Ihre 10000 in 19 Sekunden.

Das Problem ist also definitiv mit dem Anhang einzelner Zeichen für vorhandene Zeilen. Der Leerlaufprogrammierer wusste nicht, wie TKText funktioniert.

Der Rat ist also, mehr Neulinge in Ihren Text hinzuzufügen oder größere Stücke und nicht nur ein einzelnes 'X' -Zeichen auszugeben.

Andere Tipps

Das Problem ist das Widget des Tkinter -Textes und die ineffiziente Verwaltung sehr langer Zeilen, und Sie erstellen einen. Sie werden feststellen, dass ein Teil einer sehr langen Linie sichtbar ist, aber alle Scrollen teuflisch langsam sind.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top