[PYTHON] Versuchen Sie, Pyston 0.1 auszuführen

Über Pyston

Pyston ist eine kompatible Implementierung von Python 2.7, die mit DropBox erstellt wurde. Es scheint, dass die Implementierung gefördert wird, um die Leistung mithilfe von LLVM und moderner JIT-Technologie zu verbessern. Weitere Informationen finden Sie im folgenden Artikel.

 With those caveats, Pyston generally is able to beat CPython’s performance, but still lags behind PyPy.

"Leistung besser als CPython, aber nicht so gut wie PyPy."

Übrigens scheint es, dass es derzeit auf die Plattform der Ubuntu + x86_amd64-Umgebung abzielt.

Bauen

Derzeit (Stand: 15. April 2014) wird die Binärdatei nicht veröffentlicht, daher müssen Sie sie selbst erstellen. Sie können es grob erstellen, indem Sie sich auf Folgendes beziehen.

Umgebung erstellen

Ich habe versucht, mit Vagrant eine Umgebung zu erstellen.

$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=12.04
DISTRIB_CODENAME=precise
DISTRIB_DESCRIPTION="Ubuntu 12.04 LTS"

Flow erstellen

Fast wie dokumentiert.

Holen Sie sich den Code für Pyston

Holen Sie sich den Code von Github

$ sudo apt-get install git
$ cd ~/
$ git clone https://github.com/dropbox/pyston.git

Installieren Sie, was von Pyston abhängt

$ mkdir ~/pyston_deps

Baue gcc für clang

$ sudo apt-get install libgmp-dev libmpfr-dev libmpc-dev make build-essential libtool zip gcc-multilib autogen
$ cd ~/pyston_deps
$ wget 'http://www.netgull.com/gcc/releases/gcc-4.8.2/gcc-4.8.2.tar.bz2'
$ tar xvf gcc-4.8.2.tar.bz2
$ mkdir gcc-4.8.2-{build,install}
$ cd gcc-4.8.2-build
$ ../gcc-4.8.2/configure --disable-bootstrap --enable-languages=c,c++ --prefix=$HOME/pyston_deps/gcc-4.8.2-install
$ make -j4
$ make check
$ make install

ccache

$ sudo apt-get install ccache

Fügen Sie die folgende Zeile zu ~ / pyston / src / Makefile.local hinzu, wenn Sie sie nicht verwenden

 USE_CCACHE := 0

Einführung der für den LLVM-Build erforderlichen Pakete

$ sudo apt-get install libncurses5-dev zlib1g-dev

LLVM + clang

$ cd ~/pyston_deps
$ git clone http://llvm.org/git/llvm.git llvm-trunk
$ git clone http://llvm.org/git/clang.git llvm-trunk/tools/clang
$ cd ~/pyston/src
$ make llvm_up
$ make llvm_configure
$ make llvm -j4

libunwind

$ cd ~/pyston_deps
$ wget http://download.savannah.gnu.org/releases/libunwind/libunwind-1.1.tar.gz
$ tar xvf libunwind-1.1.tar.gz
$ mkdir libunwind-1.1-install
$ cd libunwind-1.1
$ ./configure --prefix=$HOME/pyston_deps/libunwind-1.1-install --enable-shared=0
$ make -j4
$ make install
$ ldconfig

valgrind

Laut dem Installationsdokument ist apt alt, daher heißt es, dass Sie aus dem Quellcode erstellen sollten Ich werde es gehorsam von der Quelle einfügen.

$ cd ~/pyston_deps
$ wget http://valgrind.org/downloads/valgrind-3.9.0.tar.bz2
$ tar xvf valgrind-3.9.0.tar.bz2
$ mkdir valgrind-3.9.0-install
$ cd valgrind-3.9.0
$ ./configure --prefix=$HOME/pyston_deps/valgrind-3.9.0-install
$ make -j4
$ make install
$ sudo apt-get install libc6-dbg

Bearbeiten Sie dann ~ / pyston / src / Makefile.local

VALGRIND := VALGRIND_LIB=$(HOME)/pyston_deps/valgrind-3.9.0-install/lib/valgrind $(HOME)/pyston_deps/valgrind-3.9.0-install/bin/valgrind

In Bezug auf optionale Abhängigkeiten ist in Readme.md geschrieben, dass Sie es überspringen können, daher werde ich es hier weglassen.

(Endlich) Pyston bauen

$ cd ~/pyston/src
$ make check -j4

Es laufen verschiedene Tests. Wenn der Test erfolgreich bestanden wurde, haben Sie eine Binärdatei. Danke für deine harte Arbeit.

$ ls ~/pyston/src/pyston*
/home/vagrant/pyston/src/pyston
/home/vagrant/pyston/src/pyston_prof
/home/vagrant/pyston/src/pyston_dbg

Startmethode

$ ./pyston
  1.9ms to load stdlib
 4.3ms for initCodegen
4.5ms for jit startup
Pyston v0.1, rev 1fe94923ff6f
>>

Der Vervose-Modus ist in Pyston 0.1 Standard. Wenn Sie also nicht an der Erstellung von LLVM interessiert sind, fügen Sie die Option "q (leise)" hinzu.

$ ./pyston -q
>>

Lesen Sie die Datei mit der Option "i" in REPL ein. Übrigens kann es nur gelesen werden, wenn sich die Datei in ~ / pyston / src befindet (sie fällt aufgrund eines Segmentierungsfehlers).

$ ./pyston -iq hello.py
Hello Pyston v0.1
Pyston v0.1, rev 1fe94923ff6f
>>
print("Hello Pyston v0.1")

Es kann auch aus einer Datei ausgeführt werden.

$ ./pyston -q hello.py
Hello Pyston v0.1

Weitere Details finden Sie hier.

https://github.com/dropbox/pyston/blob/master/README.md#command-line-options

wichtiger Punkt

Wenn Sie bisher nicht enttäuscht wurden, lesen Sie weiter.

Also ist es wirklich schnell?

Also habe ich eine Leistungsprüfung durchgeführt. Der Vergleich ist wie folgt

Rekursiv

import time

def fib(n):
    if n < 2: return n
    return fib(n - 2) + fib(n - 1)

if __name__ == "__main__":
    for x in range(3):
        fib(3)

    start = time.time()
    result = fib(38)
    timespan = time.time() - start
    print(result)
    print (timespan)

Python v2.7.3

$ python -i fib.py
39088169
11.7266070843

PyPy v2.2.1

$ ~/pypy-2.2.1-linux64/bin/pypy -i fib.py
39088169
2.00477910042

Pyston v0.1

$ cd ~/pyston/src
$ ./pyston -iq fib.py
39088169
1.37748503685

rec.png

Mit dieser Art von Gefühl stellte ich fest, dass für rekursiven Code eine Beschleunigung zu erwarten ist.

Schleife

import time

def fib(n):
    value = 0
    f1, f2 = 1, -1
    for i in range(n+1):
        value = f1 + f2
        f2 = f1
        f1 =value

    return value

if __name__ == "__main__":
    for x in range(3):
        fib(3)

    start = time.time()
    result = 0
    for x in range(0,5000):
        result = fib(38)
    timespan = time.time() - start
    print(result)
    print (timespan)

Python v2.7.3

$ python -i fib_loop.py
39088169
0.0174479484558

PyPy v2.2.1

$ ~/pypy-2.2.1-linux64/bin/pypy -i fib_loop.py
39088169
0.0166938304901

Pyston v0.1

$ cd ~/pyston/src
$ ./pyston -iq fib.py
39088169
0.0527310371399

loop.png

Loops sind langsamer als Python.

Referenz

↑ Ich habe auf den Bestätigungscode verwiesen.

das ist alles.

Recommended Posts

Versuchen Sie, Pyston 0.1 auszuführen
Versuchen Sie, Amazon Timestream auszuführen
Versuchen Sie, Python mit Try Jupyter auszuführen
Versuchen Sie, Jupyter mit VS-Code auszuführen
Versuchen Sie, Jupyter Notebook auf einem Mac auszuführen
Versuchen Sie Python
versuchen Sie es mit pysdl2
Versuchen Sie, die PlaidML-Bildbeurteilung auf einem Mac auszuführen
In Bezug auf Pyston 0.3
Versuchen Sie PyOpenGL
Versuchen Sie, Kobukis 3D-Simulator auf ROS auszuführen
Versuchen Sie, Google Chrome mit Python und Selenium auszuführen
Versuchen Sie, Distributed TensorFlow auf der Google Cloud Platform auszuführen