MinGW Schrott ?

Schnelle objektorientierte, kompilierende Programmiersprache.
Antworten
jeanluc
Beiträge: 33
Registriert: Mo Apr 22, 2013 10:18 pm

MinGW Schrott ?

Beitrag von jeanluc » Do Okt 24, 2013 2:58 pm

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 ?

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3125
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: MinGW Schrott ?

Beitrag von cloidnerux » Do Okt 24, 2013 3:05 pm

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 :D
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.
Redundanz macht wiederholen unnötig.
quod erat expectandum

jeanluc
Beiträge: 33
Registriert: Mo Apr 22, 2013 10:18 pm

Re: MinGW Schrott ?

Beitrag von jeanluc » Do Okt 24, 2013 3:50 pm

Hab den Fehler gefunden, das falsche Build Target ausgewählt :mrgreen:

Asche über mein Haupt.

P.S.: So schlecht kann meine Implementierung nicht sein, läuft immerhin 8x so schnell wie PyPy ;)

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3125
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: MinGW Schrott ?

Beitrag von cloidnerux » Do Okt 24, 2013 3:57 pm

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.
Redundanz macht wiederholen unnötig.
quod erat expectandum

sebix
Beiträge: 82
Registriert: Mo Nov 19, 2012 8:27 pm

Re: MinGW Schrott ?

Beitrag von sebix » Do Okt 24, 2013 5:09 pm

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.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: MinGW Schrott ?

Beitrag von Xin » Mo Okt 28, 2013 9:59 am

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.
sebix hat geschrieben:möge man entsprechende Libs wie Scipy/Numpy verwenden oder in Cython/Fortran coden.
Zum Thema Fortran sei auf das Fortran-Tutorial verwiesen. Man beachte die Jahreszahl...
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Antworten