Schließlich schrieb ich einen einfachen Generator von Permutationen in Python (Implementierung von "plain changes" -Algorithmus von Knuth in "The Art ... 4" beschrieben). Ich war neugierig auf die Unterschiede in der Ausführungszeit zwischen Python2 und Python3. Hier ist meine Funktion:Leicht unterschiedliche Ausführungszeiten zwischen Python2 und Python3
def perms(s):
s = tuple(s)
N = len(s)
if N <= 1:
yield s[:]
raise StopIteration()
for x in perms(s[1:]):
for i in range(0,N):
yield x[:i] + (s[0],) + x[i:]
In der python3 Version, die ich gerade geändertener Druck x (x) als Druck Druck ist eine Funktion in py3. Ich testete beide mit Timeit-Modul.
Meine Tests:
$ echo "python2.6:" && ./testing.py && echo "python3:" && ./testing3.py
python2.6:
args time[ms]
1 0.003811
2 0.008268
3 0.015907
4 0.042646
5 0.166755
6 0.908796
7 6.117996
8 48.346996
9 433.928967
10 4379.904032
python3:
args time[ms]
1 0.00246778964996
2 0.00656183719635
3 0.01419159912
4 0.0406293644678
5 0.165960511097
6 0.923101452814
7 6.24257639835
8 53.0099868774
9 454.540967941
10 4585.83498001
Wie Sie, für die Anzahl der Argumente weniger als 6 sehen kann, Python 3 schneller, aber dann Rollen sind umgekehrt und python2.6 ist besser. Da ich ein Anfänger in Python-Programmierung bin, frage ich mich, warum ist das so? Oder vielleicht ist mein Skript für python2 optimiert?
Vielen Dank im Voraus für die Art Antwort :)
Bitte verwenden Sie die richtige Formatierung. –
Formatieren Sie zuerst Ihren Code mit der Schaltfläche '{}'. Dann erkläre, warum das wichtig ist. –
Dies ist nicht wahrscheinlich, dass es wirklich wichtig ist, nur Neugier. – ecik