Geschwindigkeitsvergleich zwischen CPython und PyPy

Vergleich der Verarbeitungsgeschwindigkeit zum Hinzufügen von Elementen zur Liste

Annahme

Zum Vergleich der Verarbeitungsgeschwindigkeit haben wir die Ausführungszeit von CPython, der offiziellen Implementierung von Python, und PyPy, der JIT-Compiler-Implementierung von Python of Python, verglichen.

Für die folgenden drei Funktionen, die in Python-Listeneinschlussnotation verwendet werden, So messen Sie die Ausführungszeit mit Python Teil 1 Der in (: //qiita.com/intermezzo-fr/items/9ac2916a9155d5317ebc) definierte Dekorator wurde verwendet.

Zu bewertende Funktion

# 1. testfunc1:Bereiten Sie eine leere Liste vor und hängen Sie sie an
@time
def testfunc1(rangelist):
    templist = []
    for temp in rangelist:
        templist.append(temp)

# 2. testfunc2: 1+Objektivieren anhängen
@time
def testfunc2(rangelist):
    templist = []
    append = templist.append
    for temp in rangelist:
        append(temp)

# 3. testfunc3:Listeneinschlussnotation
@time
def testfunc3(rangelist):
    templist = [temp for temp in rangelist]

Dekorateur zur Zeitmessung

def time(func):
    import functools
    import datetime
    @functools.wraps(func)
    def wrapper(*args, **kwargs):
        start = datetime.datetime.today()
        result = func(*args, **kwargs)
        end = datetime.datetime.today()
        return end - start
    return wrapper

Die Versionen von CPython und PyPy lauten wie folgt.

CPython

Python 2.7.4 (default, Apr  6 2013, 19:54:46) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.

PyPy

Python 2.7.3 (87aa9de10f9c, Nov 24 2013, 17:46:53)
[PyPy 2.2.1 with MSC :.1500 32 bit] on win32
Type "help", "copyright", "credits" or "license" for more information
And now for something completely different: ``PyPy 1.3 released''

Ergebnis

Für jede Funktion wurde der Prozess des Hinzufügens von 10.000.000 Elementen zur Liste zehnmal ausgeführt und die durchschnittliche Ausführungszeit ermittelt.

CPython

>>> rangelist = range(1,10000000)
>>> print reduce(lambda x, y: x + y, [testfunc1(rangelist) for temp in range(0,10)])/10
0:00:00.998600
>>> print reduce(lambda x, y: x + y, [testfunc2(rangelist) for temp in range(0,10)])/10
0:00:00.723500
>>> print reduce(lambda x, y: x + y, [testfunc3(rangelist) for temp in range(0,10)])/10
0:00:00.399900

PyPy

>>> rangelist = range(1,10000000)
>>> print reduce(lambda x, y: x + y, [testfunc1(rangelist) for temp in range(0,10)])/10
0:00:00.290300
>>> print reduce(lambda x, y: x + y, [testfunc2(rangelist) for temp in range(0,10)])/10
0:00:00.275500
>>> print reduce(lambda x, y: x + y, [testfunc3(rangelist) for temp in range(0,10)])/10
0:00:00.046300

Für einen genauen Vergleich müssen Sie den ersten überspringen und viel tun, aber wir haben hier nichts getan.

Fazit

Jede Vergrößerung (CPython-Ausführungszeit ÷ PyPy-Ausführungszeit) ist wie folgt. Je höher die Zahl, desto schneller PyPy.

In PyPy ist testfunc3, die Version mit Listeneinschluss, besonders schnell. Ich dachte daran, Lua im Zusammenhang mit dem JIT-Compiler zu studieren, aber ich dachte, ich sollte in diesem Fall PyPy studieren.

Recommended Posts

Geschwindigkeitsvergleich zwischen CPython und PyPy
Geschwindigkeitsvergleich zwischen CPython und PyPy
Experiment zum Vergleich der Schreibgeschwindigkeit von Dateien zwischen Python 2.7.9 und Pypy 2.5.0
Geschwindigkeitsvergleich zwischen inkrementierender Zählvariable und Aufzählung
Unterschied zwischen MicroPython und CPython
Funktion zum Öffnen einer Datei in Python3 (Unterschied zwischen open und codecs.open und Geschwindigkeitsvergleich)
Geschwindigkeitsunterschied zwischen wsgi, Flasche und Flasche
Geschwindigkeitsvergleich von murmurhash3, md5 und sha1
Neue Datei erstellen [Vergleich zwischen Bash und PowerShell]
Zwischen parametrisch und nicht parametrisch
[Ruby vs Python] Benchmark-Vergleich zwischen Rails und Flask
CPython gegen PyPy gegen Pyston
[Ubuntu] [Python] Vergleich der Gesichtserkennung zwischen dlib und OpenCV
[Python] So legen Sie Variablennamen dynamisch fest und vergleichen die Geschwindigkeit
BASIC und C sowie Assembler-Geschwindigkeitsvergleich und -optimierung spielen mit IchigoJam
AtCoder ABC151 Problem D Geschwindigkeitsvergleich in C ++ / Python / PyPy
Leistungsvergleich zwischen zweidimensionaler Matrixberechnung und für mit Numpy
Unterschied zwischen Prozess und Job
Konvertierung zwischen Unixtime und Datetime
Geschwindigkeitsvergleich von Python, Java, C ++
Unterschied zwischen Regression und Klassifikation
Zusammenarbeit zwischen PTVS und Anaconda
Unterschied zwischen np.array und np.arange
Python 3 Sortier- und Vergleichsfunktionen
Zusammenarbeit zwischen py2exe und Setup-Tools
Vergleich von Apex und Lamvery
Grenze zwischen C und Golang
Unterschied zwischen ps a und ps -a
Unterschied zwischen Return und Print-Python
Geschwindigkeitsvergleich der Volltextverarbeitung von Wiktionary mit F # und Python
Geschichte des Geschwindigkeitsvergleichs der Art des numerischen Werts und der Zeichenkette (unvollendet))
Suche nach Zeichenketten in Dateien [Vergleich zwischen Bash und PowerShell]
Zusammenfassung der Unterschiede zwischen Python und PHP (Vergleichstabelle der Hauptelemente)