<?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[Boost Iterator bei PTR Container Geschwindigkeit]]></title><description><![CDATA[<p>Ist es möglich das die Iteratoren im Verhältniss zu einer normalen Integer-For-Schleife ziemlich langsam sind oder mache ich irgendwas krass falsch?</p>
<p>im Vector sind ~40 Elemente(die Schleife wird 1 mal pro Frame durchlaufen):</p>
<pre><code class="language-cpp">for (int i = 0; i&lt;_Stars.size(); i++)
	{
		_Stars[i].Tick();
	}
</code></pre>
<p>entspricht 10000 FPS</p>
<pre><code class="language-cpp">for (boost::ptr_vector&lt;CBStar&gt;::iterator i = _Stars.begin();
              i != _Stars.end();
              i++)
         {
            i-&gt;Tick();
         }
</code></pre>
<p>entspricht 5500 FPS</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/233869/boost-iterator-bei-ptr-container-geschwindigkeit</link><generator>RSS for Node</generator><lastBuildDate>Thu, 24 Sep 2026 14:37:37 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/233869.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 10 Feb 2009 12:31:38 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Boost Iterator bei PTR Container Geschwindigkeit on Tue, 10 Feb 2009 12:31:38 GMT]]></title><description><![CDATA[<p>Ist es möglich das die Iteratoren im Verhältniss zu einer normalen Integer-For-Schleife ziemlich langsam sind oder mache ich irgendwas krass falsch?</p>
<p>im Vector sind ~40 Elemente(die Schleife wird 1 mal pro Frame durchlaufen):</p>
<pre><code class="language-cpp">for (int i = 0; i&lt;_Stars.size(); i++)
	{
		_Stars[i].Tick();
	}
</code></pre>
<p>entspricht 10000 FPS</p>
<pre><code class="language-cpp">for (boost::ptr_vector&lt;CBStar&gt;::iterator i = _Stars.begin();
              i != _Stars.end();
              i++)
         {
            i-&gt;Tick();
         }
</code></pre>
<p>entspricht 5500 FPS</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1661028</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1661028</guid><dc:creator><![CDATA[FunMaker]]></dc:creator><pubDate>Tue, 10 Feb 2009 12:31:38 GMT</pubDate></item><item><title><![CDATA[Reply to Boost Iterator bei PTR Container Geschwindigkeit on Tue, 10 Feb 2009 12:45:25 GMT]]></title><description><![CDATA[<p>Naja, so extrem langsamer scheint es ja nicht zu sein. Ein Faktor 2 ist nicht die Welt. Und ja, sie sind langsamer. Der Vergleichsoperator != wird als Methodenaufruf bei Iteratoren realisiert, waehrend bei int != direkt als Assemblerbefefehl zur Verfuegung steht. Das gleiche gilt auch fuer ++ und -&gt; . Somit verwundert es nicht. Natuerlich solltest du auch mal maximale Optimierung anschalten (mit g++ ist es die Option -O3). Desweiteren verstehe ich nicht, welche Gruende fuer boost::ptr_vector sprechen, teste doch mal mit std::vector&lt;CBStar*&gt;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1661035</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1661035</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Tue, 10 Feb 2009 12:45:25 GMT</pubDate></item><item><title><![CDATA[Reply to Boost Iterator bei PTR Container Geschwindigkeit on Tue, 10 Feb 2009 12:55:08 GMT]]></title><description><![CDATA[<p>++i statt i++<br />
und iterator debugging deaktivieren.</p>
<p>und nein, iteratoren sind nicht generell langsamer als nicht iteratoren.</p>
<p>die beiden codes sind übrigens auch unterschiedlich. bei einem hast du einen container voller T* und bei einem einen voller T.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1661042</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1661042</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Tue, 10 Feb 2009 12:55:08 GMT</pubDate></item><item><title><![CDATA[Reply to Boost Iterator bei PTR Container Geschwindigkeit on Tue, 10 Feb 2009 13:19:31 GMT]]></title><description><![CDATA[<p>und NDEBUG definieren! <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1661066</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1661066</guid><dc:creator><![CDATA[Blue-Tiger]]></dc:creator><pubDate>Tue, 10 Feb 2009 13:19:31 GMT</pubDate></item><item><title><![CDATA[Reply to Boost Iterator bei PTR Container Geschwindigkeit on Tue, 10 Feb 2009 13:26:58 GMT]]></title><description><![CDATA[<p>Blue-Tiger schrieb:</p>
<blockquote>
<p>und NDEBUG definieren! <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>
</blockquote>
<p>Das sollte im Release-Modus automatisch definiert sein (zumindest unter MSVC++).</p>
<p>FunMaker, welche IDE benutzt du? Kompilierst du im Release-Modus und sind die Optimierungen auf Maximum? Shades Hinweis, ++i statt i++ zu nehmen, könnte schon einiges bewirken, da dann unnötige Kopien wegfallen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1661076</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1661076</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 10 Feb 2009 13:26:58 GMT</pubDate></item><item><title><![CDATA[Reply to Boost Iterator bei PTR Container Geschwindigkeit on Tue, 10 Feb 2009 14:00:00 GMT]]></title><description><![CDATA[<p>Und wenn es sicher ist, das du die Liste nicht änderst, kannst du dir einen ständigen Funktionsaufruf von .end() auch sparen. Ich weiß aber nicht ob dies der Compiler von sich aus optimieren kann:</p>
<pre><code class="language-cpp">for(boost::ptr_vector&lt;CBStar&gt;::iterator it = _Stars.begin(), end = _Stars.end();
  it != end; ++it)
    it-&gt;Tick();
</code></pre>
<p>for(&lt;1&gt;;&lt;2&gt;;&lt;3&gt;)<br />
1: Wird einmalig zu Beginn aufgerufen<br />
2: Wird vor jedem Schleifendurchgang ausgeführt<br />
3: Wird nach jedem Schleifendurchgangs ausgeführt</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1661122</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1661122</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Tue, 10 Feb 2009 14:00:00 GMT</pubDate></item><item><title><![CDATA[Reply to Boost Iterator bei PTR Container Geschwindigkeit on Tue, 10 Feb 2009 14:45:49 GMT]]></title><description><![CDATA[<p>Erst einmal danke für die Antworten. Ich denke ich werde auf die Iteratoren verzichten da mir der Einbruch schon etwas zu stark ist (und mir ehrlich Iteratoren eher unsympatisch sind auch wenn sie gewisse Vorzüge haben).</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/21632">@knivil</a>: Ich hatte zunächst Probleme(bzw. ich musste alles hin und herreferenzieren das es ging - sah sehr unschön aus) mit dem de/referenzieren von den Elementen in einem STL Container - da habe ich mich für den ptr_container entschieden - letztendlich liegt ja auch nur nen STL Container drunter</p>
<p>@Shade of Mine: wechsel von i++ auf ++i hat immerhin 500 fps mehr gebracht <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><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/12954">@Nexus</a>: VS2008 Express. Habe es mal mit Release kompiliert da springt er von 10000 auf 20000 und bei der Iterator Variante auf 8500</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/14941">@asc</a>: Ist von der Geschwindigkeit fast kein Unterschied</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1661162</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1661162</guid><dc:creator><![CDATA[FunMaker]]></dc:creator><pubDate>Tue, 10 Feb 2009 14:45:49 GMT</pubDate></item><item><title><![CDATA[Reply to Boost Iterator bei PTR Container Geschwindigkeit on Tue, 10 Feb 2009 14:55:00 GMT]]></title><description><![CDATA[<p>FunMaker schrieb:</p>
<blockquote>
<p>VS2008 Express</p>
</blockquote>
<p>Tu mal<br />
<a href="http://msdn.microsoft.com/en-us/library/aa985896.aspx" rel="nofollow">Secure SCL</a><br />
und<br />
<a href="http://msdn.microsoft.com/en-us/library/aa985965.aspx" rel="nofollow">Checked Iterators</a><br />
lesen.</p>
<p>PS:<br />
und tu iteratoren verwenden. das tut besser sein tun.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1661167</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1661167</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Tue, 10 Feb 2009 14:55:00 GMT</pubDate></item><item><title><![CDATA[Reply to Boost Iterator bei PTR Container Geschwindigkeit on Tue, 10 Feb 2009 18:26:53 GMT]]></title><description><![CDATA[<p>shade tu mal aufhören volkard nachzumachen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1661318</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1661318</guid><dc:creator><![CDATA[^]]></dc:creator><pubDate>Tue, 10 Feb 2009 18:26:53 GMT</pubDate></item></channel></rss>