<?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[Große Datenmenge in Datei schreiben]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich stehe vor einer bis jetzt nicht für mich lösbaren Aufgabe <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Ein Messdatensatz von knappe 200 kB wird 20-30 Mal pro Sekunde aktualisiert und soll in eine Datei geschrieben werden.</p>
<p>z.B.</p>
<pre><code>struct MD
{
u16 *a;
u16 *b;
u16 *c;
u16 *d;
u16 *f;
};
</code></pre>
<p>a,b,c,d,e sollen Arrays mit einer Größe von 150x150;</p>
<p>Bisher versuchte ich es mit ofstreams und FILE.</p>
<p>Nach circa 900 Schreibzyklen wird das Schreiben der Datei extrem langsamer.</p>
<p>Es sollen Datenmengen um 2-3 GB entstehen.</p>
<p>Was kann man tun, um möglichst viele Daten sequentiell in eine Datei zu schreiben?</p>
<p>Grüße<br />
Speedy</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/311106/große-datenmenge-in-datei-schreiben</link><generator>RSS for Node</generator><lastBuildDate>Tue, 04 Aug 2026 00:32:55 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/311106.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 27 Nov 2012 09:55:24 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Große Datenmenge in Datei schreiben on Tue, 27 Nov 2012 09:55:24 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich stehe vor einer bis jetzt nicht für mich lösbaren Aufgabe <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Ein Messdatensatz von knappe 200 kB wird 20-30 Mal pro Sekunde aktualisiert und soll in eine Datei geschrieben werden.</p>
<p>z.B.</p>
<pre><code>struct MD
{
u16 *a;
u16 *b;
u16 *c;
u16 *d;
u16 *f;
};
</code></pre>
<p>a,b,c,d,e sollen Arrays mit einer Größe von 150x150;</p>
<p>Bisher versuchte ich es mit ofstreams und FILE.</p>
<p>Nach circa 900 Schreibzyklen wird das Schreiben der Datei extrem langsamer.</p>
<p>Es sollen Datenmengen um 2-3 GB entstehen.</p>
<p>Was kann man tun, um möglichst viele Daten sequentiell in eine Datei zu schreiben?</p>
<p>Grüße<br />
Speedy</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2275030</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2275030</guid><dc:creator><![CDATA[Speedy123]]></dc:creator><pubDate>Tue, 27 Nov 2012 09:55:24 GMT</pubDate></item><item><title><![CDATA[Reply to Große Datenmenge in Datei schreiben on Tue, 27 Nov 2012 10:01:22 GMT]]></title><description><![CDATA[<p>Für welches OS? Wie sehen deine bisherigen Versuche aus?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2275031</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2275031</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Tue, 27 Nov 2012 10:01:22 GMT</pubDate></item><item><title><![CDATA[Reply to Große Datenmenge in Datei schreiben on Tue, 27 Nov 2012 10:07:12 GMT]]></title><description><![CDATA[<p>Im Moment unter Windows 7. Portierung auf Linux ist geplant.</p>
<p>Wie gesagt mit FILE und ofstream -&gt; zyklisches Füllen der Dateien.</p>
<p>z.B.</p>
<pre><code>ofstream myfile;
..
myfile.write((const char*)(setMB-&gt;a), sizeof(int)*150*150);
</code></pre>
<p>oder</p>
<pre><code>...
fwrite(setMB-&gt;a,sizeof(int)*150*150,1,fp);
...
</code></pre>
<p>Danke schon mal!</p>
<p>Speedy</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2275032</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2275032</guid><dc:creator><![CDATA[Speedy123]]></dc:creator><pubDate>Tue, 27 Nov 2012 10:07:12 GMT</pubDate></item><item><title><![CDATA[Reply to Große Datenmenge in Datei schreiben on Tue, 27 Nov 2012 10:16:50 GMT]]></title><description><![CDATA[<p>Wie wär's mal mit C++? Damit meine ich im Standard festgehaltene Datentypen wie long statt Zeiger:</p>
<pre><code>struct MD
{
long a;
long b;
long c;
long d;
long f;
};
</code></pre>
<p>Die Casts sind auch nicht unbedingt hübsch und sicher. Besser:</p>
<pre><code>ofstream myfile;
..
myfile &lt;&lt; setMB-&gt;a;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2275033</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2275033</guid><dc:creator><![CDATA[Rew.]]></dc:creator><pubDate>Tue, 27 Nov 2012 10:16:50 GMT</pubDate></item><item><title><![CDATA[Reply to Große Datenmenge in Datei schreiben on Tue, 27 Nov 2012 10:22:04 GMT]]></title><description><![CDATA[<p>Rew. schrieb:</p>
<blockquote>
<p>Wie wär's mal mit C++? Damit meine ich im Standard festgehaltene Datentypen wie long statt Zeiger:</p>
</blockquote>
<p>-&gt; Zeiger, da Daten auf dem Heap liegen. Stack zu klein.</p>
<p>Rew. schrieb:</p>
<blockquote>
<pre><code>struct MD
{
long a;
long b;
long c;
long d;
long f;
};
</code></pre>
<p>Die Casts sind auch nicht unbedingt hübsch und sicher. Besser:</p>
<pre><code>ofstream myfile;
..
myfile &lt;&lt; setMB-&gt;a;
</code></pre>
</blockquote>
<p>Funktioniert bei fixen VAraibelgrößen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2275036</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2275036</guid><dc:creator><![CDATA[Speedy123]]></dc:creator><pubDate>Tue, 27 Nov 2012 10:22:04 GMT</pubDate></item><item><title><![CDATA[Reply to Große Datenmenge in Datei schreiben on Tue, 27 Nov 2012 10:23:16 GMT]]></title><description><![CDATA[<p>write ist eigentlich schon das beste, was du machen kannst. Wenn deine Schreibzyklen allesamt 150*150*4*6 Bytes haben, dann sind 900 Zyklen 500 MB. Das klingt danach als würde da irgendein Cache voll laufen und es wird tatsächlich angefangen, Daten auf die Platte zu schreiben. Dann bricht natürlich die Schreibzeit aus Sicht des Programmes gewaltig ein. Im Schnitt wirst du am Ende natürlich auf Datenmenge/Festplattengeschwindigkeit als Zeit kommen, bloß am Anfang hast du einen anderen Eindruck, weil du mit RAM-Geschwindigkeit schreibst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2275038</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2275038</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 27 Nov 2012 10:23:16 GMT</pubDate></item><item><title><![CDATA[Reply to Große Datenmenge in Datei schreiben on Tue, 27 Nov 2012 10:33:02 GMT]]></title><description><![CDATA[<p>Speedy123 schrieb:</p>
<blockquote>
<p>200 kB wird 20-30 Mal pro Sekunde</p>
</blockquote>
<p>Das entspricht maximal ca. 6MB/s, was für aktuelle SATA Schnittstellen und Platten eigentlich kein Problem sein sollte.</p>
<p>Stellt das denn ein Problem dar? SeppJ hat ja schon geschrieben, dass Du wahrscheinlich in eine Geschwindigkeitsbegrenzung reinläufst, weil ein Cache voll ist.</p>
<p>Selbst wenn Du Dir eine lokale Lösung baust (eigener Cache, ein Thread der die Daten daraus wegschreibt, ...) wirst Du irgendwann auf die Geschwindigkeitsgrenze der Hardware laufen, auf der die Datei liegt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2275046</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2275046</guid><dc:creator><![CDATA[Seagate]]></dc:creator><pubDate>Tue, 27 Nov 2012 10:33:02 GMT</pubDate></item><item><title><![CDATA[Reply to Große Datenmenge in Datei schreiben on Tue, 27 Nov 2012 10:45:39 GMT]]></title><description><![CDATA[<p>Du kannst unter Windows bei <code>CreateFile</code> über bestimmte Flags das Verhalten steuern. Die höchste Performance erreicht man wohl über FILE_FLAG_NO_BUFFERING | FILE_FLAG_OVERLAPPED und asynchronen <code>WriteFile</code> Aufrufen. Ich hab´ da allerdings selbst wenig Erfahrung als dass ich da konkrete Tipps geben könnte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2275056</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2275056</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Tue, 27 Nov 2012 10:45:39 GMT</pubDate></item><item><title><![CDATA[Reply to Große Datenmenge in Datei schreiben on Tue, 27 Nov 2012 11:48:05 GMT]]></title><description><![CDATA[<p>Wenn dein System und dein Compiler 2-3 GB Daten im Ram zulassen, dann allokiere zum Schreiben alles dort. Die Erstellung der Datei kann dann zum Schluss erfolgen. Nur ein Tipp ohne eigene Erfahrungen in dieser Grössenordnung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2275076</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2275076</guid><dc:creator><![CDATA[berniebutt]]></dc:creator><pubDate>Tue, 27 Nov 2012 11:48:05 GMT</pubDate></item></channel></rss>