Skip to content

Psyco

by Matthias Derer on November 10th, 2008

Ich bin schon eine Weile begeistert aktiv beim Project Euler. Die Sprache meiner Wahl ist (natürlich) Python.

Bei einigen Aufgaben war mir allerdings die Geschwindigkeit von cPython zu gering und ich bin auf C ausgewichen. Nun bin ich aber auf ein Projekt gestoßen, welches eine Art JIT (Just-in-Time Compiler) für Python darstelt. Das Ganze nennt sich Psyco, lässt sich ohne Änderungen am Sourcecode einfach als Modul einbinden und haut besonders bei so Aufgaben, wie sie eben auf Project Euler zu finden sind, ordentlich rein. Da es sich hierbei oft um algorithmische Loops handelt, sind diese Aufgaben ein gefundenes Fressen für die JIT-Optimierung.

Und es ist wirklich unfassbar, welchen Geschwindigkeitsgewinn man mit Psyco erreicht.

“Think of Psyco as a kind of just-in-time (JIT) compiler, a little bit like what exists for other languages, that emit machine code on the fly instead of interpreting your Python program step by step. The difference with the traditional approach to JIT compilers is that Psyco writes several version of the same blocks (a block is a bit of a function), which are optimized by being specialized to some kinds of variables (a “kind” can mean a type, but it is more general). The result is that your unmodified Python programs run faster.”

Allen, die sich gerne auf Project Euler austoben (oder anderweitigen, optimierungsfähigen Code in Python herumliegen haben), kann ich dieses Tool wärmstens empfehlen (wink @ Stefan)

]]>

Ich bin schon eine Weile begeistert aktiv beim Project Euler. Die Sprache meiner Wahl ist (natürlich) Python.

Bei einigen Aufgaben war mir allerdings die Geschwindigkeit von cPython zu gering und ich bin auf C ausgewichen. Nun bin ich aber auf ein Projekt gestoßen, welches eine Art JIT (Just-in-Time Compiler) für Python darstelt. Das Ganze nennt sich Psyco, lässt sich ohne Änderungen am Sourcecode einfach als Modul einbinden und haut besonders bei so Aufgaben, wie sie eben auf Project Euler zu finden sind, ordentlich rein. Da es sich hierbei oft um algorithmische Loops handelt, sind diese Aufgaben ein gefundenes Fressen für die JIT-Optimierung.

Und es ist wirklich unfassbar, welchen Geschwindigkeitsgewinn man mit Psyco erreicht.

“Think of Psyco as a kind of just-in-time (JIT) compiler, a little bit like what exists for other languages, that emit machine code on the fly instead of interpreting your Python program step by step. The difference with the traditional approach to JIT compilers is that Psyco writes several version of the same blocks (a block is a bit of a function), which are optimized by being specialized to some kinds of variables (a “kind” can mean a type, but it is more general). The result is that your unmodified Python programs run faster.”

Allen, die sich gerne auf Project Euler austoben (oder anderweitigen, optimierungsfähigen Code in Python herumliegen haben), kann ich dieses Tool wärmstens empfehlen (wink @ Stefan)

From → Uncategorized

No comments yet

Leave a Reply

Note: XHTML is allowed. Your email address will never be published.

Subscribe to this comment feed via RSS