Optimierungsbedarf Code von BMaxzu Python
Verfasst: Freitag 1. Februar 2008, 22:46
Hi,
da ich ja ernsthaft mit dem Gedanken spiele mein Projekt (den Serverteil) mit Python und den Modulen zu erstellen, wollte ich mal testen, wie ich generell klar komme und vor allem wie schnell Python ist.
Im ersten Schritt habe ich einen kleinen Teil sinngemäß nach Python übertragen, also quasi Python pur. Natürlich ist was da rauskommt viel viel zu langsam. Aber ich denke mal, dass man da noch vieles optimieren kann, bevor ich anfange Bereiche nach C/C++ aus zu lagern. Dazu bräuchte ich mal eure Hilfe.
BlitzMax braucht für 1000 Instanzen weniger als eine Sekunde.
Mein Python Skript braucht knapp 30 Sekunden. Das schockiert mich jetzt recht wenig, da ich die 30 Sekunden auch mit BMax geschafft habe, und zwar durch die Verwendung einer Liste nur um indexweise an den Inhalt zu gelangen. Das gleiche habe ich denke ich mal jetzt auch in Python gemacht.
Ich habe dann in BlitzMax die Liste in ein Array konvertiert und durch casting auf die einzelnen Elemente zu gegriffen. Resultat: von 30 Sek auf <1 Sek.
Python hat ja nun keine Arrays in dem Sinne. Was wäre denn euer Vorschlag das ganze zu optimieren??
Hier schon mal mein Python Code: http://paste.pocoo.org/show/25236/
Witziger Weise gibt de Profiler Werte zurück die rein gar nichts zu tun haben mit der eigentlichen Ausführungszeit. Warum eigentlich?
Edit (BlackJack): Code ausgelagert.
da ich ja ernsthaft mit dem Gedanken spiele mein Projekt (den Serverteil) mit Python und den Modulen zu erstellen, wollte ich mal testen, wie ich generell klar komme und vor allem wie schnell Python ist.
Im ersten Schritt habe ich einen kleinen Teil sinngemäß nach Python übertragen, also quasi Python pur. Natürlich ist was da rauskommt viel viel zu langsam. Aber ich denke mal, dass man da noch vieles optimieren kann, bevor ich anfange Bereiche nach C/C++ aus zu lagern. Dazu bräuchte ich mal eure Hilfe.
BlitzMax braucht für 1000 Instanzen weniger als eine Sekunde.
Mein Python Skript braucht knapp 30 Sekunden. Das schockiert mich jetzt recht wenig, da ich die 30 Sekunden auch mit BMax geschafft habe, und zwar durch die Verwendung einer Liste nur um indexweise an den Inhalt zu gelangen. Das gleiche habe ich denke ich mal jetzt auch in Python gemacht.
Ich habe dann in BlitzMax die Liste in ein Array konvertiert und durch casting auf die einzelnen Elemente zu gegriffen. Resultat: von 30 Sek auf <1 Sek.
Python hat ja nun keine Arrays in dem Sinne. Was wäre denn euer Vorschlag das ganze zu optimieren??
Hier schon mal mein Python Code: http://paste.pocoo.org/show/25236/
Witziger Weise gibt de Profiler Werte zurück die rein gar nichts zu tun haben mit der eigentlichen Ausführungszeit. Warum eigentlich?
Edit (BlackJack): Code ausgelagert.