<?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[Frage zu Speicherverteilung eines vector]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich hab ein Verständnisproblem und hoffe ihr könnt mir weiterhelfen.</p>
<p>Ich nutze einen vector&lt;bool&gt; für eine kleine Simulation, wobei dieser vector sehr groß werden kann (wird gleich beim kompilieren in fester Größe angelegt).<br />
Auf diesem vector führe ich in einer Schleife Operationen aus, also Lesen und Schreiben beliebiger Elemente. Ist der vector kleiner als der RAM (4 GB) schaffe ich ca. 12.000 Schleifendurchläufe pro Sekunde.<br />
Jetzt wollte ich testen wie schnell es noch geht wenn der vector nicht mehr in den Arbeitsspeicher passt und habe einen 10GB vector erstellt. Nachdem es am Anfang wie erwartet langsamer lief, begann sich die Ausführung nach etwa 10^5 Schleifendurchläufen zu beschleunigen und geht nun wieder gegen 12.000 pro Sekunde.<br />
Schaue ich mir im Task-Manager die Leistung an, liegen 11 GB in der Auslagerungsdatei, 3,8 GB im RAM (vor Programmstart etwa 1 GB). Die Prozessorauslastung des ersten Kerns liegt bei 100% in beiden Fällen (große und kleine Zelle), wobei sie bei der großen Zelle am Anfang starke Oszillationen aufweist.</p>
<p>Nun die eigentliche Frage: Ich dachte ein vector legt einen zusammenhängenden Speicherbereich an. Warum splittet der sich jedoch offenbar auf den Arbeitsspeicher und die Festplatte auf?!<br />
Was genau passiert da?</p>
<p>Ich bin nicht unbedingt böse, dass das passiert - ich verstehs nur nicht.</p>
<p>Weitere Infos:<br />
AMD Quadcore CPU<br />
alte HDD<br />
kein ReadyBoost<br />
Win7 64bit<br />
MSVS 2010 Ultimate<br />
Codeoptimierung &quot;Geschwindigkeit maximieren&quot; (/O3)</p>
<p>Klärt mich bitte auf! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Viele Grüße</p>
<p>Uranhexafluorid</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/294894/frage-zu-speicherverteilung-eines-vector</link><generator>RSS for Node</generator><lastBuildDate>Sat, 15 Aug 2026 17:20:25 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/294894.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 03 Nov 2011 10:40:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Frage zu Speicherverteilung eines vector on Thu, 03 Nov 2011 10:40:00 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich hab ein Verständnisproblem und hoffe ihr könnt mir weiterhelfen.</p>
<p>Ich nutze einen vector&lt;bool&gt; für eine kleine Simulation, wobei dieser vector sehr groß werden kann (wird gleich beim kompilieren in fester Größe angelegt).<br />
Auf diesem vector führe ich in einer Schleife Operationen aus, also Lesen und Schreiben beliebiger Elemente. Ist der vector kleiner als der RAM (4 GB) schaffe ich ca. 12.000 Schleifendurchläufe pro Sekunde.<br />
Jetzt wollte ich testen wie schnell es noch geht wenn der vector nicht mehr in den Arbeitsspeicher passt und habe einen 10GB vector erstellt. Nachdem es am Anfang wie erwartet langsamer lief, begann sich die Ausführung nach etwa 10^5 Schleifendurchläufen zu beschleunigen und geht nun wieder gegen 12.000 pro Sekunde.<br />
Schaue ich mir im Task-Manager die Leistung an, liegen 11 GB in der Auslagerungsdatei, 3,8 GB im RAM (vor Programmstart etwa 1 GB). Die Prozessorauslastung des ersten Kerns liegt bei 100% in beiden Fällen (große und kleine Zelle), wobei sie bei der großen Zelle am Anfang starke Oszillationen aufweist.</p>
<p>Nun die eigentliche Frage: Ich dachte ein vector legt einen zusammenhängenden Speicherbereich an. Warum splittet der sich jedoch offenbar auf den Arbeitsspeicher und die Festplatte auf?!<br />
Was genau passiert da?</p>
<p>Ich bin nicht unbedingt böse, dass das passiert - ich verstehs nur nicht.</p>
<p>Weitere Infos:<br />
AMD Quadcore CPU<br />
alte HDD<br />
kein ReadyBoost<br />
Win7 64bit<br />
MSVS 2010 Ultimate<br />
Codeoptimierung &quot;Geschwindigkeit maximieren&quot; (/O3)</p>
<p>Klärt mich bitte auf! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Viele Grüße</p>
<p>Uranhexafluorid</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2139735</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2139735</guid><dc:creator><![CDATA[Uranhexafluorid]]></dc:creator><pubDate>Thu, 03 Nov 2011 10:40:00 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Speicherverteilung eines vector on Thu, 03 Nov 2011 10:45:53 GMT]]></title><description><![CDATA[<p>Schon mal darueber nachgedacht, was eine Auslagerungsdatei ist? Oder Working space eines Prozesses ist?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2139737</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2139737</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Thu, 03 Nov 2011 10:45:53 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Speicherverteilung eines vector on Thu, 03 Nov 2011 10:50:23 GMT]]></title><description><![CDATA[<p>Schau mal hier:<br />
<a href="https://secure.wikimedia.org/wikipedia/de/wiki/Virtueller_Speicher" rel="nofollow">https://secure.wikimedia.org/wikipedia/de/wiki/Virtueller_Speicher</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2139739</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2139739</guid><dc:creator><![CDATA[Caligulaminus]]></dc:creator><pubDate>Thu, 03 Nov 2011 10:50:23 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Speicherverteilung eines vector on Thu, 03 Nov 2011 10:55:32 GMT]]></title><description><![CDATA[<p>Erstmal danke euch beiden - irgendwie ging ich davon aus, dass ein vector wirklich zusammenhängenden Speicher auf einem Medium belegt...<br />
Habe mir über die Abläufe dahinter nicht wirklich Gedanken gemacht bis jetzt - wäre wohl angebracht gewesen bevor ich hier frage. Sorry!</p>
<p>Trotzdem ist mir nich klar warum es immernoch quasi genauso schnell läuft, wie wenn nichts ausgelagert werden muss. Ich greife ja im Prinzip zufällig auf den vector zu.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2139742</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2139742</guid><dc:creator><![CDATA[Uranhexafluorid]]></dc:creator><pubDate>Thu, 03 Nov 2011 10:55:32 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Speicherverteilung eines vector on Thu, 03 Nov 2011 10:59:31 GMT]]></title><description><![CDATA[<blockquote>
<p>Ich greife ja im Prinzip zufällig auf den vector zu.</p>
</blockquote>
<p>Das kann ich von hier aus nicht verifizieren. Vielleicht ist der Compiler auch so schlau und ersetzt deinen vector&lt;bool&gt; durch etwas magisches. Das kann der.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2139747</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2139747</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Thu, 03 Nov 2011 10:59:31 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Speicherverteilung eines vector on Thu, 03 Nov 2011 11:21:46 GMT]]></title><description><![CDATA[<p>Ah ok, der Compiler wandelt meinen, wahrscheinlich grottigen, Code in was magisches um, was viel besser ist.<br />
Naja, mir solls egal sein, Hauptsache es kommt das raus, was rauskommen soll...</p>
<p>Danke nochmal!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2139754</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2139754</guid><dc:creator><![CDATA[Uranhexafluorid]]></dc:creator><pubDate>Thu, 03 Nov 2011 11:21:46 GMT</pubDate></item></channel></rss>