<?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[Multithreading Flaschenhals]]></title><description><![CDATA[<p>Halli Hallo</p>
<p>Meine Frage dreht sich um folgendes Problem:<br />
Ich entwickle zur Zeit eine Software mit C++ welche zu Programmstart eine große Datenmenge aus mehreren Files einlesen soll.</p>
<p>-----------------------------------<br />
Hardware Konfiguration:<br />
-----------------------------------<br />
Intel(R) Core(TM) i5 CPU 750 @ 2.67GHz 2.66GHz (Quad Core)<br />
4,00 GB DDR3<br />
Win7 x64<br />
-----------------------------------</p>
<p>Da ich, dank 4 CPU's, mehrere Files parallel einlesen möchte habe ich bei der Software Multithreading eingesetzt. Jetzt ergibt sich folgendes Phänomen beim Einlesen 3 gleicher Files.</p>
<p>SingleThread(seriell): spricht nur 1 CPU an --&gt; 25% CPU Auslastung<br />
--&gt; Programm benötigt 10s/File --&gt; 30s insgesamt<br />
Multithread(parallel): spricht 3 CPU's an (da 1 Thread/File) --&gt; 75% Auslastung<br />
--&gt; Programm benötigt 30s/File --&gt; 30s insgesamt</p>
<p>Meine Frage daher: Warum benötigt der Computer bei einer CPU Auslastung von 75% genauso lange wie bei einer Auslastung von 25%?</p>
<p>Wo kann der Flaschenhals liegen? HardDisk, RAM (wird durch die Files nicht voll ausgelastet), ..... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> ???</p>
<p>Vielen Dank,<br />
lg,<br />
Andreas</p>
<p>Meine Threads erstelle ich mit</p>
<pre><code class="language-cpp">hThread[i] = CreateThread( NULL, 
							  0, 
							  mbsmVtrImporter::vtrToMbsmField_threadEntry, 
							  (LPVOID)i, 
							  0, 
							  &amp;dwThreadID[i] 
							 );
</code></pre>
<p>Und für globale Ressourcen verwende ich Mutex nach dem Schema:</p>
<pre><code class="language-cpp">HANDLE pathMutex= CreateMutex(NULL,
				FALSE,	
				&quot;PathMutex&quot;);
// vor Zugriff auf Resource
static void lockFile()
{
	WaitForSingleObject(pathMutex, INFINITE);
}
// nach Zugriff auf Resource
static void unlockFile()
{
         ReleaseMutex(pathMutex);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/267667/multithreading-flaschenhals</link><generator>RSS for Node</generator><lastBuildDate>Wed, 02 Sep 2026 07:51:50 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/267667.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 28 May 2010 08:12:18 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Multithreading Flaschenhals on Fri, 28 May 2010 08:12:18 GMT]]></title><description><![CDATA[<p>Halli Hallo</p>
<p>Meine Frage dreht sich um folgendes Problem:<br />
Ich entwickle zur Zeit eine Software mit C++ welche zu Programmstart eine große Datenmenge aus mehreren Files einlesen soll.</p>
<p>-----------------------------------<br />
Hardware Konfiguration:<br />
-----------------------------------<br />
Intel(R) Core(TM) i5 CPU 750 @ 2.67GHz 2.66GHz (Quad Core)<br />
4,00 GB DDR3<br />
Win7 x64<br />
-----------------------------------</p>
<p>Da ich, dank 4 CPU's, mehrere Files parallel einlesen möchte habe ich bei der Software Multithreading eingesetzt. Jetzt ergibt sich folgendes Phänomen beim Einlesen 3 gleicher Files.</p>
<p>SingleThread(seriell): spricht nur 1 CPU an --&gt; 25% CPU Auslastung<br />
--&gt; Programm benötigt 10s/File --&gt; 30s insgesamt<br />
Multithread(parallel): spricht 3 CPU's an (da 1 Thread/File) --&gt; 75% Auslastung<br />
--&gt; Programm benötigt 30s/File --&gt; 30s insgesamt</p>
<p>Meine Frage daher: Warum benötigt der Computer bei einer CPU Auslastung von 75% genauso lange wie bei einer Auslastung von 25%?</p>
<p>Wo kann der Flaschenhals liegen? HardDisk, RAM (wird durch die Files nicht voll ausgelastet), ..... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> ???</p>
<p>Vielen Dank,<br />
lg,<br />
Andreas</p>
<p>Meine Threads erstelle ich mit</p>
<pre><code class="language-cpp">hThread[i] = CreateThread( NULL, 
							  0, 
							  mbsmVtrImporter::vtrToMbsmField_threadEntry, 
							  (LPVOID)i, 
							  0, 
							  &amp;dwThreadID[i] 
							 );
</code></pre>
<p>Und für globale Ressourcen verwende ich Mutex nach dem Schema:</p>
<pre><code class="language-cpp">HANDLE pathMutex= CreateMutex(NULL,
				FALSE,	
				&quot;PathMutex&quot;);
// vor Zugriff auf Resource
static void lockFile()
{
	WaitForSingleObject(pathMutex, INFINITE);
}
// nach Zugriff auf Resource
static void unlockFile()
{
         ReleaseMutex(pathMutex);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1903548</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1903548</guid><dc:creator><![CDATA[GreedyRaccoon]]></dc:creator><pubDate>Fri, 28 May 2010 08:12:18 GMT</pubDate></item><item><title><![CDATA[Reply to Multithreading Flaschenhals on Fri, 28 May 2010 08:13:54 GMT]]></title><description><![CDATA[<p>Wieso Dateien locken wenn du eh nur lesend drauf zugreifst?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1903549</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1903549</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Fri, 28 May 2010 08:13:54 GMT</pubDate></item><item><title><![CDATA[Reply to Multithreading Flaschenhals on Fri, 28 May 2010 08:19:20 GMT]]></title><description><![CDATA[<p>In der Regel ist die Festplatte der Flaschenhals. Selbst ein Kern ist schnell genug um die Festplatte voll auszulasten, daher macht Multithreading dort wenig Sinn.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1903552</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1903552</guid><dc:creator><![CDATA[Janjan]]></dc:creator><pubDate>Fri, 28 May 2010 08:19:20 GMT</pubDate></item><item><title><![CDATA[Reply to Multithreading Flaschenhals on Fri, 28 May 2010 08:21:35 GMT]]></title><description><![CDATA[<p>Ok guter Punkt .. daher bei reinem Lesezugriff muss man globale Resourcen nicht locken (kann man das allgemein so sagen?)</p>
<p>In der selben Anwendung gibt es einen zweiten Moment in dem die Threads ihre Daten in eine globale std::list speichern. Jeder Thread macht also einfach ein list-&gt;push_back(meineDaten).<br />
Ist hier ein lock der list sinnvoll oder auch unnötig?</p>
<p>---&gt; Gibt es eine Möglichkeit die Disk zu beschleunigen/auszutricksen? ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1903553</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1903553</guid><dc:creator><![CDATA[GreedyRaccoon]]></dc:creator><pubDate>Fri, 28 May 2010 08:21:35 GMT</pubDate></item><item><title><![CDATA[Reply to Multithreading Flaschenhals on Fri, 28 May 2010 08:26:09 GMT]]></title><description><![CDATA[<p>GreedyRaccoon schrieb:</p>
<blockquote>
<p>Ok guter Punkt .. daher bei reinem Lesezugriff muss man globale Resourcen nicht locken (kann man das allgemein so sagen?)</p>
</blockquote>
<p>Ja. Die Daten können zwischendurch ja nicht geändert werden. Das locken ist nur notwendig, um sicherzugehen das die Daten zwischendurch nicht von jemand anderes geändert werden. Beachte, dies gilt nur wenn nirgendwo anders nebenbei die Daten beschrieben werden.</p>
<p>GreedyRaccoon schrieb:</p>
<blockquote>
<p>In der selben Anwendung gibt es einen zweiten Moment in dem die Threads ihre Daten in eine globale std::list speichern. Jeder Thread macht also einfach ein list-&gt;push_back(meineDaten).<br />
Ist hier ein lock der list sinnvoll oder auch unnötig?</p>
</blockquote>
<p>Absolut! Geschieht auch nur _irgendwo_ nebenbei ein Schreibzugriff, so muss jeglicher Schreibb- und Lesezugriff synchronisiert werden mittels Locks. std::list ist nicht von sich aus Threadsicher.</p>
<p>GreedyRaccoon schrieb:</p>
<blockquote>
<p>---&gt; Gibt es eine Möglichkeit die Disk zu beschleunigen/auszutricksen? ...</p>
</blockquote>
<p>Kauf dir ne SSD. <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/1903555</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1903555</guid><dc:creator><![CDATA[Janjan]]></dc:creator><pubDate>Fri, 28 May 2010 08:26:09 GMT</pubDate></item><item><title><![CDATA[Reply to Multithreading Flaschenhals on Fri, 28 May 2010 08:36:17 GMT]]></title><description><![CDATA[<p>Meine Platte zurzeit</p>
<p>Typ und Anschluss Festplatte - SATA II<br />
Speicherkapazität / Cache 500.0 GB / 16 MB<br />
Geschwindigkeit 7200 rpm</p>
<p>Was wäre eine Platte welche den QuadCores genüge tun würde? (so, dass diese wieder zum Flaschenhals werden?)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1903566</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1903566</guid><dc:creator><![CDATA[GreedyRaccoon]]></dc:creator><pubDate>Fri, 28 May 2010 08:36:17 GMT</pubDate></item><item><title><![CDATA[Reply to Multithreading Flaschenhals on Fri, 28 May 2010 08:40:17 GMT]]></title><description><![CDATA[<p>GreedyRaccoon schrieb:</p>
<blockquote>
<p>Was wäre eine Platte welche den QuadCores genüge tun würde? (so, dass diese wieder zum Flaschenhals werden?)</p>
</blockquote>
<p>Gar kein, selbst ein 1GHz-Prozessor wird deutlich schneller sein als ne SSD-Platte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1903568</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1903568</guid><dc:creator><![CDATA[l&#x27;abra d&#x27;or]]></dc:creator><pubDate>Fri, 28 May 2010 08:40:17 GMT</pubDate></item><item><title><![CDATA[Reply to Multithreading Flaschenhals on Fri, 28 May 2010 08:40:27 GMT]]></title><description><![CDATA[<p>Nimm vier Platten im RAID-0-Verbund und du hast damit keine Probleme mehr. <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/1903569</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1903569</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Fri, 28 May 2010 08:40:27 GMT</pubDate></item><item><title><![CDATA[Reply to Multithreading Flaschenhals on Fri, 28 May 2010 08:41:17 GMT]]></title><description><![CDATA[<p>Fellhuhn schrieb:</p>
<blockquote>
<p>Nimm vier Platten im RAID-0-Verbund und du hast damit keine Probleme mehr. <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>Es sei denn, eine Platte geht kaputt...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1903571</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1903571</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Fri, 28 May 2010 08:41:17 GMT</pubDate></item><item><title><![CDATA[Reply to Multithreading Flaschenhals on Fri, 28 May 2010 08:42:24 GMT]]></title><description><![CDATA[<p>Tachyon schrieb:</p>
<blockquote>
<p>Fellhuhn schrieb:</p>
<blockquote>
<p>Nimm vier Platten im RAID-0-Verbund und du hast damit keine Probleme mehr. <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>Es sei denn, eine Platte geht kaputt...</p>
</blockquote>
<p>Who cares? Das Problem hast auch bei nur einer Platte. Oder einer SSD. Backups sind immer sinnig. <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/1903572</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1903572</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Fri, 28 May 2010 08:42:24 GMT</pubDate></item><item><title><![CDATA[Reply to Multithreading Flaschenhals on Fri, 28 May 2010 08:44:56 GMT]]></title><description><![CDATA[<p>Fellhuhn schrieb:</p>
<blockquote>
<p>Tachyon schrieb:</p>
<blockquote>
<p>Fellhuhn schrieb:</p>
<blockquote>
<p>Nimm vier Platten im RAID-0-Verbund und du hast damit keine Probleme mehr. <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>Es sei denn, eine Platte geht kaputt...</p>
</blockquote>
<p>Who cares? Das Problem hast auch bei nur einer Platte. Oder einer SSD. Backups sind immer sinnig. <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>Naja, das Risiko vervierfacht sich...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1903575</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1903575</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Fri, 28 May 2010 08:44:56 GMT</pubDate></item><item><title><![CDATA[Reply to Multithreading Flaschenhals on Fri, 28 May 2010 09:07:49 GMT]]></title><description><![CDATA[<p>gibts da keine schlauen Tricks wie man das Codemäßig bissl beschleunigen kann?</p>
<p>Irgendwelche trickserein zwischen HD und RAM? ... gar nix??</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1903598</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1903598</guid><dc:creator><![CDATA[GreedyRaccoon]]></dc:creator><pubDate>Fri, 28 May 2010 09:07:49 GMT</pubDate></item><item><title><![CDATA[Reply to Multithreading Flaschenhals on Fri, 28 May 2010 09:10:46 GMT]]></title><description><![CDATA[<p>Tachyon schrieb:</p>
<blockquote>
<p>Fellhuhn schrieb:</p>
<blockquote>
<p>Tachyon schrieb:</p>
<blockquote>
<p>Fellhuhn schrieb:</p>
<blockquote>
<p>Nimm vier Platten im RAID-0-Verbund und du hast damit keine Probleme mehr. <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>Es sei denn, eine Platte geht kaputt...</p>
</blockquote>
<p>Who cares? Das Problem hast auch bei nur einer Platte. Oder einer SSD. Backups sind immer sinnig. <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>Naja, das Risiko vervierfacht sich...</p>
</blockquote>
<p>Was aber ja nicht heißt das viermal so schnell ein Fehler auftritt. Wenn man dann aber die Arbeit in einem Viertel der Zeit schafft ist das schon lohnenswert. <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="🙂"
    /><br />
Und noch ärgerlicher ist es mit nur einer Platte langsam zu arbeiten und trotzdem seine Daten zu verlieren. <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>Sonst halt RAID-5. Nicht ganz so fix aber sicherer.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1903601</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1903601</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Fri, 28 May 2010 09:10:46 GMT</pubDate></item><item><title><![CDATA[Reply to Multithreading Flaschenhals on Fri, 28 May 2010 09:10:49 GMT]]></title><description><![CDATA[<p>Festplattenzugriffe sind nunmal langsam, diese solltest du so weit wie möglich vermeiden. Die einzige Möglichkeit es <strong>etwas</strong> zu beschleunigen ist größere Blöcke gleichzeitig zu lesen, anstatt z.B. Zeichen für Zeichen einzulesen. Aber auch das hilft nur wenig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1903602</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1903602</guid><dc:creator><![CDATA[Janjan]]></dc:creator><pubDate>Fri, 28 May 2010 09:10:49 GMT</pubDate></item><item><title><![CDATA[Reply to Multithreading Flaschenhals on Fri, 28 May 2010 09:16:59 GMT]]></title><description><![CDATA[<p>Ohne Garantie:<br />
Du könntest ja mal einen Test bauen, der per CreateFileMapping/ViewMapOfFile den Dateiinhalt direkt in den Speicher einblendet und die Daten von dort abholt. Vielleicht bringt das ein wenig Performance.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1903607</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1903607</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Fri, 28 May 2010 09:16:59 GMT</pubDate></item><item><title><![CDATA[Reply to Multithreading Flaschenhals on Fri, 28 May 2010 10:53:06 GMT]]></title><description><![CDATA[<p>Du könntest zuerst die Dateien am Stück in 4 Strings einlesen. Dann rennen 4 Threads durch die Strings und füllen jeweils eine eigene std::list.<br />
Wenn die Threads fertig sind, werden die lists zusammengefügt.</p>
<pre><code class="language-cpp">global_list.splice(global_list.end(), thread1.list);
global_list.splice(global_list.end(), thread2.list);
...
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1903653</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1903653</guid><dc:creator><![CDATA[brotbernd]]></dc:creator><pubDate>Fri, 28 May 2010 10:53:06 GMT</pubDate></item><item><title><![CDATA[Reply to Multithreading Flaschenhals on Fri, 28 May 2010 11:34:25 GMT]]></title><description><![CDATA[<p>Ok vielen Dank!</p>
<p>Die Idee mit dem am stück einlesen klingt verlockend.<br />
Was ist die schnellste Variante um mit C++ eine ASCII Datei in den RAM zu schieben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1903671</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1903671</guid><dc:creator><![CDATA[GreedyRaccoon]]></dc:creator><pubDate>Fri, 28 May 2010 11:34:25 GMT</pubDate></item><item><title><![CDATA[Reply to Multithreading Flaschenhals on Fri, 28 May 2010 11:48:43 GMT]]></title><description><![CDATA[<p>Vielleicht gibts schnellere Speziallösungen, aber ich mach das in etwa so</p>
<pre><code class="language-cpp">std::string read_file(const char * file)
{
	std::ifstream ifs(file);
	if (ifs.good())
	{
		ifs.seekg (0, std::ios::end);
		size_t length = ifs.tellg();
		ifs.seekg (0, std::ios::beg);

		std::vector&lt;char&gt; buffer(length+1);
		ifs.read (&amp;buffer[0], length);
		buffer[length] = 0;
		return &amp;buffer[0];
	}
	throw std::runtime_error(&quot;file ist doof&quot;);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1903681</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1903681</guid><dc:creator><![CDATA[brotbernd]]></dc:creator><pubDate>Fri, 28 May 2010 11:48:43 GMT</pubDate></item><item><title><![CDATA[Reply to Multithreading Flaschenhals on Fri, 28 May 2010 11:59:24 GMT]]></title><description><![CDATA[<p>Ich denke schon, dass die Win32 API da mit den Filemappings schneller sein könnte, weil sie näher am System arbeiten als die C++ Streams. Ist aber, wie gesagt, reine Vermutung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1903696</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1903696</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Fri, 28 May 2010 11:59:24 GMT</pubDate></item><item><title><![CDATA[Reply to Multithreading Flaschenhals on Fri, 28 May 2010 12:22:08 GMT]]></title><description><![CDATA[<p>DocShoe schrieb:</p>
<blockquote>
<p>Ich denke schon, dass die Win32 API da mit den Filemappings schneller sein könnte, weil sie näher am System arbeiten als die C++ Streams.</p>
</blockquote>
<p>Zumindest vor einigen Jahren war das auch definitiv so (Und nicht nur um wenige Prozentpunkte).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1903708</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1903708</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Fri, 28 May 2010 12:22:08 GMT</pubDate></item><item><title><![CDATA[Reply to Multithreading Flaschenhals on Fri, 28 May 2010 12:27:52 GMT]]></title><description><![CDATA[<p>Gilt das auch für ein einmaliges Einlesen? Ich benutze in einem Projekt gemappte Files (aus boost::interprocess), um in einer riesigen Datei viel drin rumzulesen, das ist tatsächlich sehr schnell. Aber nur um die Datei einmal einzulesen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1903710</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1903710</guid><dc:creator><![CDATA[brotbernd]]></dc:creator><pubDate>Fri, 28 May 2010 12:27:52 GMT</pubDate></item><item><title><![CDATA[Reply to Multithreading Flaschenhals on Fri, 28 May 2010 12:32:59 GMT]]></title><description><![CDATA[<p>brotbernd schrieb:</p>
<blockquote>
<p>Gilt das auch für ein einmaliges Einlesen?...</p>
</blockquote>
<p>Ich hatte es vor einigen Jahren vor allem für das einmalige Einlesen und analysieren benötigt (und gleichzeitig durfte der Speicherverbrauch nicht massiv ansteigen).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1903711</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1903711</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Fri, 28 May 2010 12:32:59 GMT</pubDate></item><item><title><![CDATA[Reply to Multithreading Flaschenhals on Fri, 28 May 2010 12:44:19 GMT]]></title><description><![CDATA[<p>Ich habe heuer auf einem Kern es ausgemessen mit 8 threads und scattered io, file mapping, std und einfacher WinApi und die Unterschiede waren auch nur im Bereich eines Prozents.<br />
Für Einlesen-Und-Vergessen, also Streams, zum Beispiel CRC berechnen, nehme ich einfache WinApi, wenn die Daten ins Ram sollen, um Rumspringen zu können, nehme ich file mapping.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1903719</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1903719</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Fri, 28 May 2010 12:44:19 GMT</pubDate></item></channel></rss>