Schreiben einer Datei sehr langsam



  • Ich versuche gerade eine Datei zu schreiben.

    std::ofstream objfile;
    std::ostringstream output;
    // befüllen von output mit << "bla" << "bla"
    objfile << output.str();
    

    In der letzten Zeile brauche ich für etwa 100mb im Release Modus mehrere Minuten obwohl es eigentlich nicht mal 10 Sekunden dauern sollte.

    Was mache ich falsch?



  • Wozu der ostringstream ? Du kannst doch gleich in die Datei schreiben.



  • TyRoXx schrieb:

    Wozu der ostringstream ? Du kannst doch gleich in die Datei schreiben.

    Geht in diesem Fall nicht.



  • Hat sich glaube ich erledigt. Wenn ich es aus der Entwicklungsumgebung starte dann braucht es Ewigkeiten trotz Release Modus. Sobald ich es aus der Kommandozeile starte geht es sehr schnell. Total eigenartig. Normalerweise sollte der Release Modus doch die tatsächlichliche Release Geschwindigkeit haben oder nicht?



  • Bei Visual Studio wird zum Beispiel "standardmässig" die Debug-Laufzeitumgebung gestartet (grünes ausgefülltes vs. hohles Dreieck). Das kann schon einiges ausmachen, auch im Release-Modus.



  • Nexus schrieb:

    Bei Visual Studio wird zum Beispiel "standardmässig" die Debug-Laufzeitumgebung gestartet (grünes ausgefülltes vs. hohles Dreieck). Das kann schon einiges ausmachen, auch im Release-Modus.

    Herr Nexus sie sind der Held des Tages 😮. Ich arbeite etwa 4 Jahre mit VS2010 und muss mich daher schämen dass ich diesen Unterschied noch nicht kannte. Genau da lag der Unterschied.

    Danke



  • Vier Jahre mit VSXXXX .. nicht exakt VS2010 ..



  • Nexus schrieb:

    Bei Visual Studio wird zum Beispiel "standardmässig" die Debug-Laufzeitumgebung gestartet (grünes ausgefülltes vs. hohles Dreieck). Das kann schon einiges ausmachen, auch im Release-Modus.

    Ich nix versteh.

    Meinst du damit das "freie" Starten des Programms vs. das Starten im Debugger?
    Wenn ja, was hat das mit der Laufzeitumgebung zu tun?



  • Okay, mit Laufzeitumgebung habe ich nicht die C-Runtime gemeint, sondern eben die Debugumgebung, die zur Laufzeit vorhanden ist (oder einfach den Debugger) 😉



  • Ah, OK.
    Das ist ein bekanntes Phänomen, ja 🙂


Anmelden zum Antworten