<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[std::ofstream sehr langsam]]></title><description><![CDATA[<p>Hallo.<br />
Ich habe ein Programm, dass eine Datei einliest, sie bearbeitet und diese bearbeiteten Daten wieder in eine neue Datei schreibt. Das Einlesen klappt bei einer 1MB-Datei noch recht schnell (wenige Sekunden). Das Schreiben aber (per std::ofstream::write()) dauert allerdings sehr lange (bei der genannten 1MB-Datei ueber 20 Minuten), viel zu lange.<br />
Zum Test habe ich das Schreiben in die Datei mal auskommentiert, um zu sehen, ob es vielleicht nicht an meiner Bearbeitungsroutine liegt, aber da habe ich mich getaeuscht. Ohne das Schreiben in die Datei braucht mein Programm fuer die ganze Prozedur wenige Sekunden.<br />
Woran liegts denn?</p>
<pre><code class="language-cpp">output.write(data.c_str(), data.size()*sizeof(char)); // data ist ein std::string
</code></pre>
<p>Gruss<br />
Cartman</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/235737/std-ofstream-sehr-langsam</link><generator>RSS for Node</generator><lastBuildDate>Thu, 24 Sep 2026 04:07:39 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/235737.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 05 Mar 2009 19:19:12 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to std::ofstream sehr langsam on Thu, 05 Mar 2009 19:19:12 GMT]]></title><description><![CDATA[<p>Hallo.<br />
Ich habe ein Programm, dass eine Datei einliest, sie bearbeitet und diese bearbeiteten Daten wieder in eine neue Datei schreibt. Das Einlesen klappt bei einer 1MB-Datei noch recht schnell (wenige Sekunden). Das Schreiben aber (per std::ofstream::write()) dauert allerdings sehr lange (bei der genannten 1MB-Datei ueber 20 Minuten), viel zu lange.<br />
Zum Test habe ich das Schreiben in die Datei mal auskommentiert, um zu sehen, ob es vielleicht nicht an meiner Bearbeitungsroutine liegt, aber da habe ich mich getaeuscht. Ohne das Schreiben in die Datei braucht mein Programm fuer die ganze Prozedur wenige Sekunden.<br />
Woran liegts denn?</p>
<pre><code class="language-cpp">output.write(data.c_str(), data.size()*sizeof(char)); // data ist ein std::string
</code></pre>
<p>Gruss<br />
Cartman</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1674847</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1674847</guid><dc:creator><![CDATA[Eric Cartman]]></dc:creator><pubDate>Thu, 05 Mar 2009 19:19:12 GMT</pubDate></item><item><title><![CDATA[Reply to std::ofstream sehr langsam on Thu, 05 Mar 2009 20:02:42 GMT]]></title><description><![CDATA[<p>Selbst für das Einlesen von 1 MB dürften &quot;einige Sekunden&quot; noch viel zu lang sein...</p>
<p>Aber auf jeden Fall sollte der Funktionsaufruf eher so aussehen:</p>
<pre><code class="language-cpp">output.write(data.c_str(), data.length ());
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1674872</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1674872</guid><dc:creator><![CDATA[devkid]]></dc:creator><pubDate>Thu, 05 Mar 2009 20:02:42 GMT</pubDate></item><item><title><![CDATA[Reply to std::ofstream sehr langsam on Thu, 05 Mar 2009 20:23:24 GMT]]></title><description><![CDATA[<p>Einige Sekunden beim Lesen und beim Schreiben 20 Minuten von nur einem Megabyte? Was zur Hölle machst du?<br />
Habe gerade versucht sowas zu messen. Ein neues File wird erstellt, 1 MB Daten werden reingeschrieben, File wird geschlossen. File wird geöffnet, 1 MB Daten werden gelesen, File wird geschlossen. File wird wieder geöffnet, 1 MB Daten werden überschrieben, File wird geschlossen. Dazwischen jeweils die Zeit gemessen. Resultat:<br />
1: 0ms<br />
2: 0ms<br />
3: 0ms</p>
<p>Ich habe mit einer Auflösung von 2ms gemessen. Die Operationen sind also unterhalb dieser 2ms passiert. Der Stream ist sicher nicht dein Problem, du machst anderswo eine riesige Sache, welche dein Programm bremst. Ein Profiler würde dir da helfen.<br />
Ich frage mich allerdings was du da wohl machst. Meine persönliche XML Bibliothek braucht für das Lesen von 1 MB XML Daten gerade mal ca. 200ms. Und nach diesen 200ms habe ich ein vollwertiges XML Dokument. Das Schreiben dauert nur unwesentlich länger. Aber ganz sicher keine Sekunde und nie im Leben eine Minute oder noch mehr...</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1674893</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1674893</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Thu, 05 Mar 2009 20:23:24 GMT</pubDate></item><item><title><![CDATA[Reply to std::ofstream sehr langsam on Thu, 05 Mar 2009 21:30:51 GMT]]></title><description><![CDATA[<p>Ja, war mein Fehler.. hatte eine zu langwierige Funktion fuer write() benutzt... Danke <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Gruss<br />
Cartman</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1674930</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1674930</guid><dc:creator><![CDATA[Eric Cartman]]></dc:creator><pubDate>Thu, 05 Mar 2009 21:30:51 GMT</pubDate></item><item><title><![CDATA[Reply to std::ofstream sehr langsam on Thu, 05 Mar 2009 21:33:13 GMT]]></title><description><![CDATA[<p>Eric Cartman schrieb:</p>
<blockquote>
<p>hatte eine zu langwierige Funktion fuer write() benutzt...</p>
</blockquote>
<p>Hey, magste das mal erklären, irgendwie kann ich mir darunter rein gar nix vorstellen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1674932</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1674932</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Thu, 05 Mar 2009 21:33:13 GMT</pubDate></item><item><title><![CDATA[Reply to std::ofstream sehr langsam on Thu, 05 Mar 2009 21:45:49 GMT]]></title><description><![CDATA[<p>Badestrand schrieb:</p>
<blockquote>
<p>Eric Cartman schrieb:</p>
<blockquote>
<p>hatte eine zu langwierige Funktion fuer write() benutzt...</p>
</blockquote>
<p>Hey, magste das mal erklären, irgendwie kann ich mir darunter rein gar nix vorstellen?</p>
</blockquote>
<p>Gerne. Fuer den ersten Parameter von std::ofstream::write() habe ich eine Funktion benutzt, die einen std::string zurueckgibt (diesen dann natuerlich mit c_str() verknuepft). Diese Funktion enthielt einige Schleifen, die den Programmablauf deutlich verlangsamt haben... Konnte aber nun eine andere Loesung finden - jetzt schreibt es die 1MB-Datei in wenigen Sekunden.</p>
<p>Gruss<br />
Cartman</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1674954</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1674954</guid><dc:creator><![CDATA[Eric Cartman]]></dc:creator><pubDate>Thu, 05 Mar 2009 21:45:49 GMT</pubDate></item><item><title><![CDATA[Reply to std::ofstream sehr langsam on Thu, 05 Mar 2009 22:17:39 GMT]]></title><description><![CDATA[<p>Eric Cartman schrieb:</p>
<blockquote>
<p>Konnte aber nun eine andere Loesung finden - jetzt schreibt es die 1MB-Datei in wenigen Sekunden.</p>
</blockquote>
<p>Wenn &quot;es&quot; nebenbei nichts großartig anderes macht, dann ist &quot;wenige Sekunden&quot; immernoch zu viel, siehe Dravere's Post.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1674968</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1674968</guid><dc:creator><![CDATA[devkid]]></dc:creator><pubDate>Thu, 05 Mar 2009 22:17:39 GMT</pubDate></item><item><title><![CDATA[Reply to std::ofstream sehr langsam on Thu, 05 Mar 2009 22:44:50 GMT]]></title><description><![CDATA[<p>devkid schrieb:</p>
<blockquote>
<p>Eric Cartman schrieb:</p>
<blockquote>
<p>Konnte aber nun eine andere Loesung finden - jetzt schreibt es die 1MB-Datei in wenigen Sekunden.</p>
</blockquote>
<p>Wenn &quot;es&quot; nebenbei nichts großartig anderes macht, dann ist &quot;wenige Sekunden&quot; immernoch zu viel, siehe Dravere's Post.</p>
</blockquote>
<p>Nö, nicht wenn der PC so langsam ist. Woher weißt du, das er nicht vielleicht einen 486er hat? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1674981</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1674981</guid><dc:creator><![CDATA[Bulli]]></dc:creator><pubDate>Thu, 05 Mar 2009 22:44:50 GMT</pubDate></item><item><title><![CDATA[Reply to std::ofstream sehr langsam on Thu, 05 Mar 2009 22:49:38 GMT]]></title><description><![CDATA[<p>Bulli schrieb:</p>
<blockquote>
<p>devkid schrieb:</p>
<blockquote>
<p>Eric Cartman schrieb:</p>
<blockquote>
<p>Konnte aber nun eine andere Loesung finden - jetzt schreibt es die 1MB-Datei in wenigen Sekunden.</p>
</blockquote>
<p>Wenn &quot;es&quot; nebenbei nichts großartig anderes macht, dann ist &quot;wenige Sekunden&quot; immernoch zu viel, siehe Dravere's Post.</p>
</blockquote>
<p>Nö, nicht wenn der PC so langsam ist. Woher weißt du, das er nicht vielleicht einen 486er hat? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
</blockquote>
<p>Den hab ich auch, benutze ihn aber nicht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/18111">@devkid</a><br />
Nunja, schneller geht es wohl nicht mehr...</p>
<p>Gruss<br />
Cartman</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1674982</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1674982</guid><dc:creator><![CDATA[Eric Cartman]]></dc:creator><pubDate>Thu, 05 Mar 2009 22:49:38 GMT</pubDate></item><item><title><![CDATA[Reply to std::ofstream sehr langsam on Fri, 06 Mar 2009 08:37:01 GMT]]></title><description><![CDATA[<p>Eric Cartman schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/18111">@devkid</a><br />
Nunja, schneller geht es wohl nicht mehr...</p>
</blockquote>
<p>Sagt wer? Der Programmierer? Der kann solche Dinge meistens nur sehr schlecht beurteilen. Deshalb gibt es eben Profiler, welche die Codes zur Laufzeit analysieren und dem Programmierer Feedback geben, wo Zeit verbraten wird. 1 MB Daten sind wirklich nicht viel und sollten unterhalb von einer Sekunde mit fast egal welcher Formatierung geschrieben werden können.</p>
<p>Vielleicht könnten wir dir sogar helfen, falls es nicht zu viel Code ist. Also ich würde mich mit diesen Sekunden nicht zufrieden geben, vor allem nicht mit den heutigen Computern.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1675057</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1675057</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Fri, 06 Mar 2009 08:37:01 GMT</pubDate></item><item><title><![CDATA[Reply to std::ofstream sehr langsam on Fri, 06 Mar 2009 10:13:38 GMT]]></title><description><![CDATA[<p>Dravere schrieb:</p>
<blockquote>
<p>Sagt wer? Der Programmierer?</p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1675117</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1675117</guid><dc:creator><![CDATA[evilissimo]]></dc:creator><pubDate>Fri, 06 Mar 2009 10:13:38 GMT</pubDate></item></channel></rss>