[python-users] Performance-Optimierung einiger Berechnungen

marian marian at sendung.de
Do Dez 5 15:58:49 CET 2013


Ihr seid ja krass! Für mich war der Thread schon so gut wie geschlossen…

Die ganze Geschichte in C++ zu implementieren, kommt für mich - leider - nicht in Frage.

Aber mit diesen Optimierungen in Cython sind ja meine Erwartungen schon deutlich übertroffen. Ich denke, damit kann ich sehr gut leben.

Christopher, ich nehme an, Du hast nichts dagegen, wenn ich Dich in den credits von Audiocalc erwähne?

Was ich nun an Cython noch nicht verstanden habe: Wie plattformspezifisch wird damit der Code? Soll immer eine pure Python-Variante (.py) neben der Cython-Variante (.pyx) eines Moduls liegen bleiben, als plattformübergreifende Fallback Lösung? Muss ich dann den Code doppelt pflegen?

Danke und Grüße

Marian


Am 05.12.2013 um 15:00 schrieb Christopher Arndt <chris at chrisarndt.de>:

>> ...
> 
> Ich komme mit an Cython angepassten Code von ~ 3.465 auf ~ 0.4 sec.
> 
> $ python audiocalc/benchmark_damping.py
> Using Cython implementation of 'audiocalc'.
> Duration: 0.400 sec
> $ rm -f audiocalc/_audiocalc.so
> $ python audiocalc/benchmark_damping.py
> Using Python implementation of 'audiocalc'.
> Duration: 3.465 sec
> 
> Dabei habe ich hauptsächlich nur folgendes gemacht:
> 
> - Typen für alle Funktionsargumente und Rückgabewerte und lokale Variablen deklariert (int und double)
> - pow, exp, log10, log und sqrt als direkt als C-Funktionen aus math.h genutzt
> - Ein paar float() Conversions in Typecasts geändert.
> - Die Benchmarkfunktion selbst in den Cython-Code kopiert und genauso behandelt.
> 
> ...




Mehr Informationen über die Mailingliste python-users