Programm schneller, wenn mehr "cout"???



  • Hallo!!!

    Nein, der Titel ist kein Irrtum!!! Ich habe eine Implementation des Earley-Parsers in C++ geschrieben, die mit einer automatisch aus einer Treebank generierten Grammatik arbeitet. So weit, so gut: Das Programm läuft. Nun habe ich aber eine seltsame Beobachtung gemacht:
    Ich gebe für jeden analysierten Satz die wahrscheinlichste Analyse + den Logarithmus des Wahrscheinlichkeitswerts aus.

    cout << Ergebnis << endl;
    cout << setprecision(19) << showpoint << Passiv[i].p << endl;
    

    Wenn ich nun die 2. Zeile (Ausgabe der Wahrscheinlichkeit) weglasse, dann läuft mein Programm plötzlich etwa 10% langsamer!!! Die Ausgabe erfolgt nur einmal für jeden Satz und da würde man eigentlich erwarten, dass kein messbarer Unterschied herauskommt, und schon gar nicht, dass das Programm plötzlich langsamer läuft... Ich verwende DevC++ 4.9.8.5 und den MinGW-Compiler. Compiliert hab ich mit der Einstellung "Beste Optimierung" im DevC++.
    Vielleicht hat ja jemand von Euch eine Idee, was da passiert ist???



  • kann natürlich zufällig passieren, dass so das Alignment der Ausführbaren Datei besser ist. Das dürfte sich aber ändern, wenn du irgend wie den Code änderst.

    Oder du hast einen mess Fehler gemacht 🙂


Anmelden zum Antworten