[Kleine Geschichte] In Python ist i = i + 1 etwas schneller als i + = 1.

Wie der Titel schon sagt. Es ist zunächst kein schwerer Prozess, daher denke ich nicht, dass es einem langsamen Programm passieren wird, wenn ich das weiß, aber es war überraschend, also als kleine Geschichte.

Code


from __future__ import print_function
import timeit

print("i+=1\t", timeit.timeit("while i<1000000: i+=1", setup="i=0"))
print("i=i+1\t", timeit.timeit("while i<1000000: i=i+1", setup="i=0"))

print("a[0]+=1\t", timeit.timeit("while a[0]<1000000: a[0]+=1", setup="a=[0]"))
print("a[0]=a[0]+1\t", timeit.timeit("while a[0]<1000000: a[0]=a[0]+1", setup="a=[0]"))

text:Python2.7.8 Ausführungsergebnis


i+=1     0.0610518455505
i=i+1    0.0599188804626
a[0]+=1  0.108623981476
a[0]=a[0]+1      0.108937978745

text:Python3.4.1 Ausführungsergebnis


i+=1     0.08549419100017985
i=i+1    0.07950809699832462
a[0]+=1  0.14678418899711687
a[0]=a[0]+1      0.1382706459990004

Python3 ist langsamer. Ich wusste es nicht. Wie auch immer. Es stellt sich heraus, dass "i = i + 1" schneller ist als "i + = 1", wenn auch nur geringfügig.

Ich habe es nicht im Detail untersucht, aber die Ursache ist wahrscheinlich die folgende. Wenn Sie Zuweisungen in der Form "i + = 1" hinzufügen, versucht der Python-Interpreter zuerst, "i .__ iadd__" zu finden. Und wenn es nicht existiert, suchen Sie nach "i .__ add__". Für Ergänzungen der Form "i = i + 1" sucht der Python-Interpreter von Anfang an nach "i .__ add__". Weder Python2 noch Python3 haben also "int .__ iadd__". Daher ist die Verarbeitung von "i + = 1" verschwenderisch, da sie durch die Suche nach "int .__ iadd__" fehlschlägt. Daher ist das Format "i = i + 1" wahrscheinlich schneller.

Ich dachte jedoch, dass "a [0] + = 1" schneller wäre als "a [0] = a [0] + 1", was zwei Array-Referenzen erfordert. Wenn Sie sorgfältig darüber nachdenken, scheint es schneller zu sein, auf die 0. des Arrays zu verweisen, als nach einer Methode zu suchen.

Recommended Posts

[Kleine Geschichte] In Python ist i = i + 1 etwas schneller als i + = 1.
@ Ist schneller als Punkt
Python kleine Geschichte Sammlung
Ich habe Python auf Japanisch geschrieben
Schnellerer Python-Release-Zyklus!
Ich verstehe Python auf Japanisch!
Was ich in Python gelernt habe
[Kleine Geschichte] [Python] Ersetzen Sie Zeichenfolgen in einem zweidimensionalen Array durch Zahlen
Unterschied zwischen == und ist in Python
Verwenden Sie Stoff wie in Python (Stoff3)
Golang vs. Python - Ist Golang besser als Python?
Python ist UnicodeEncodeError im CodeBox-Docker
[Memo für Python-Wettbewerbsprofi] Der LRU-Cache ist schneller als die Memokonvertierung im Programm
sympy.Mul ist viel schneller als sympy.prod
Ich habe Fizz Buzz in Python geschrieben
[Kleine Geschichte] Holen Sie sich mit Python einen Zeitstempel
In Python gibt es keinen Schalter
Ich habe versucht, den Prozess mit Python zu studieren
Scikit-learn kann nicht in Python installiert werden
Ich habe die Warteschlange in Python geschrieben
Python in ist auch ein Operator
Ich habe Line Benachrichtigung in Python versucht
Ich habe den Stack in Python geschrieben
In Python 3.8 sieht pow (n, -1, 1000000007) besser aus als pow (n, 1000000007 - 2, 1000000007).
Ich habe Python 2.7 in Sakura VPS 1 GB installiert.
Ich habe versucht, PLSA in Python zu implementieren
Ich habe ein Pay-Management-Programm in Python erstellt!
Inject wird für DDD in Python empfohlen
Ich habe versucht, PLSA in Python 2 zu implementieren
Ich habe versucht, die Bayes'sche Optimierung von Python zu verwenden
Ich kann Python-Skripte in Eclipse nicht debuggen
Was ist "Mahjong" in der Python-Bibliothek? ??
Hash in Perl ist ein Wörterbuch in Python
Ich habe versucht, Couseras logistische Regression in Python zu implementieren
Ich habe versucht, ADALINE in Python zu implementieren
Ich wollte ABC159 mit Python lösen
Ich habe versucht, PPO in Python zu implementieren
ModuleNotFoundError in Python: Kein Modul mit dem Namen story
Ich habe mit Python nach einer Primzahl gesucht
Tipps zum Erstellen kleiner Werkzeuge mit Python
Was ist schneller, Python Shuffle oder Sample?
Ich habe ein Passwort-Tool in Python erstellt.
Verwendung ist und == in Python
Warum kann ich matplotlib nicht mit Python installieren? !!
Ich ging zu "Der Sommer ist in vollem Gange! Spark + Python + Data Science Festival".
Python-Programm ist langsam! Ich möchte beschleunigen! In einem solchen Fall ...
Ich möchte Dunnetts Test in Python machen
Ich habe versucht, Robinsons Bayesian Spam Filter mit Python zu implementieren
Ein Memo, das ich schnell in Python geschrieben habe
Python: Ich konnte in Lambda rekursieren
Ich möchte mit Python ein Fenster erstellen
Was ist im Docker Python-Image pfeifend?
Ich habe versucht, mit Python ein Tippspiel zu spielen
Wenn ich matplotlib in Python versuche, heißt es'cairo.Context '.
Ich habe versucht, "Birthday Paradox" mit Python zu simulieren
Ich habe die Methode der kleinsten Quadrate in Python ausprobiert
Ich habe mich eingehend mit der Verarbeitung von Variablen in Python befasst
Ich habe Python ausprobiert! ] Heute Abschluss von "Jeder Python! Was ist Python!"!
Ich habe eine Klasse in Python3 und Java geschrieben
Geschrieben "Einführung in die Effektüberprüfung" in Python
Über den Unterschied zwischen "==" und "is" in Python