Seite 1 von 1
MinGW Schrott ?
Verfasst: Do Okt 24, 2013 2:58 pm
von jeanluc
Als Beginner und aus Interesse habe ich mal das Programm auf
http://smallshire.org.uk/sufficientlysm ... ttributes/
in C Code übersetzt. Hier meine Implementierung:
http://pastebin.com/UYEpGQuu
Für Baumtiefe = 24 benötigt die Python-Variante unter PyPy bei mir 8 Sekunden, ein mit MinGW (mit -O3) kompiliertes Programm 10 Sekunden.
Da hat mich zunächst stutzig gemacht.
Dann habe ich das Programm mit Tiny C Compiler kompiliert und komme auf eine Sekunde.
Wie kann das sein, dass das mit MinGW kompilierte Programm das zehnfache an Zeit benötigt ?
Re: MinGW Schrott ?
Verfasst: Do Okt 24, 2013 3:05 pm
von cloidnerux
Wie kann das sein, dass das mit MinGW kompilierte Programm das zehnfache an Zeit benötigt ?
Hast du es schon ohne -O3 compiliert, bzw -O0?
Optimierungen sind nicht immer das Gelbe vom Ei.
Auch hier sieht man, was unterschiedliche Implementierungen für das Resultat bedeuten:
http://www.proggen.org/doku.php?id=project:wordcount
Da die Compiler alle leicht unterschiedlich arbeiten, kann es sein, dass du den worst-case Code geschrieben hast, den man für gcc schreiben konnte
Probiere es doch auch mal mit dem Visual Studio C Compiler.
Leider kann ich mir deinen Code nicht anschauen, da die Firewall hier das verbietet.
Re: MinGW Schrott ?
Verfasst: Do Okt 24, 2013 3:50 pm
von jeanluc
Hab den Fehler gefunden, das falsche Build Target ausgewählt
Asche über mein Haupt.
P.S.: So schlecht kann meine Implementierung nicht sein, läuft immerhin 8x so schnell wie PyPy

Re: MinGW Schrott ?
Verfasst: Do Okt 24, 2013 3:57 pm
von cloidnerux
PyPy

Man möge doch Bitte Äpfel nicht mit Birnen vergleichen.
Python wird immer Langsamer sein als C-Code mit vergleichbarer Funktionalität, da es eine Interpreter-Sprache ist.
Bevor irgendwas passieren kann, muss es erst in Maschinencode gewandelt werden, dass kostet Zeit. Diese Zeit wird für C/C++ nur einmal aufgewendet, beim Compilieren, danach muss nur noch ausgeführt werden.
Re: MinGW Schrott ?
Verfasst: Do Okt 24, 2013 5:09 pm
von sebix
PyPy und C vergleichen ist in diesem Fall sinnvoll, da es ja darum ging, zu überprüfen ob für das Compilat richtige Einstellungen gewählt wurden.
Wenn man Python mit besserer oder beinahe C-Geschwindigkeit haben möchte, möge man entsprechende Libs wie
Scipy/Numpy verwenden oder in
Cython/
Fortran coden.
Re: MinGW Schrott ?
Verfasst: Mo Okt 28, 2013 9:59 am
von Xin
sebix hat geschrieben:Wenn man Python mit besserer oder beinahe C-Geschwindigkeit haben möchte,
Python bietet ein anderes Konzept. Baut der Entwickler auf diese Eigenschaften auf, muss die C-Portierung diese Eigenschaften erhalten und eine entsprechende Umgebung bieten. Der Aufwand für diese zusätzliche Umgebung wird immer bedeuten, dass C schneller unterwegs ist. Die Umgebung in der C läuft ist die native Maschine.
Zum Thema Fortran sei auf das
Fortran-Tutorial verwiesen. Man beachte die Jahreszahl...