<?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[Zählvariable, via Prefix o. Postfix erhöhen ?]]></title><description><![CDATA[<p>Guten Mittag,</p>
<p>schreibt ihr z.B. eine for-Schleife lieber so</p>
<pre><code class="language-cpp">for(int i; i&lt;10; i++);
</code></pre>
<p>oder so</p>
<pre><code class="language-cpp">for(int i; i&lt;10; ++i);
</code></pre>
<p>Eigentlich müsste man doch immer Prefix verwenden, da dort keine Kopie erstellt werden muss. --&gt; Zeitersparnis</p>
<p>Wie groß ist die Zeiterparnis von Prefeix gegenüber Postfix im Endeffekt ?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/272249/zählvariable-via-prefix-o-postfix-erhöhen</link><generator>RSS for Node</generator><lastBuildDate>Sat, 29 Aug 2026 00:09:58 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/272249.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 13 Aug 2010 12:01:16 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zählvariable, via Prefix o. Postfix erhöhen ? on Fri, 13 Aug 2010 12:01:16 GMT]]></title><description><![CDATA[<p>Guten Mittag,</p>
<p>schreibt ihr z.B. eine for-Schleife lieber so</p>
<pre><code class="language-cpp">for(int i; i&lt;10; i++);
</code></pre>
<p>oder so</p>
<pre><code class="language-cpp">for(int i; i&lt;10; ++i);
</code></pre>
<p>Eigentlich müsste man doch immer Prefix verwenden, da dort keine Kopie erstellt werden muss. --&gt; Zeitersparnis</p>
<p>Wie groß ist die Zeiterparnis von Prefeix gegenüber Postfix im Endeffekt ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1939625</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1939625</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Fri, 13 Aug 2010 12:01:16 GMT</pubDate></item><item><title><![CDATA[Reply to Zählvariable, via Prefix o. Postfix erhöhen ? on Fri, 13 Aug 2010 12:02:49 GMT]]></title><description><![CDATA[<p>Bei <code>int</code> ist das ziemlich egal. Wenn Du aber Objekte mit überladenem Prefix-Inkrement-Operator hast, dann nicht. Ein Beispiel hierfür sind Iteratoren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1939627</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1939627</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Fri, 13 Aug 2010 12:02:49 GMT</pubDate></item><item><title><![CDATA[Reply to Zählvariable, via Prefix o. Postfix erhöhen ? on Fri, 13 Aug 2010 12:50:09 GMT]]></title><description><![CDATA[<p>10 Messungen über 200 Mio. Schleifendurchläufe ergeben:<br />
Postfix: 0.376376 s<br />
Prefix: 0.381945 s</p>
<p>Nimmt sich also so gut wie nichts.</p>
<p>Die Schleifen sehen so aus:</p>
<pre><code class="language-cpp">for( int j = 0; j &lt; 200000000; j++ )
{
	int a = j++;
}
</code></pre>
<p>bzw.</p>
<pre><code class="language-cpp">for( int k = 0; k &lt; 200000000; ++k )
{
	int a = ++k;
}
</code></pre>
<p>Debug Build mit MS VS 2008 Express (ohne Optimierungen).<br />
Im Release Build werden die Schleifen wohl komplett rausoptimiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1939640</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1939640</guid><dc:creator><![CDATA[RedPuma]]></dc:creator><pubDate>Fri, 13 Aug 2010 12:50:09 GMT</pubDate></item><item><title><![CDATA[Reply to Zählvariable, via Prefix o. Postfix erhöhen ? on Fri, 13 Aug 2010 14:53:12 GMT]]></title><description><![CDATA[<p>Ich wollt eben mal wissen wie das sich mit Iteratoren auswirkt:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;ctime&gt;
#include &lt;vector&gt;
int main()
{
	clock_t start,finish;
	std::vector&lt;int&gt; largevector(100000, 5);
	std::vector&lt;int&gt;::iterator iter;
	int i;

	start = clock();
	for (iter = largevector.begin(); iter != largevector.end(); iter++) // postfix
		i = *iter;
	finish = clock();
	std::cout &lt;&lt; &quot;postfix: &quot; &lt;&lt; (double(finish)-double(start))/CLOCKS_PER_SEC &lt;&lt; std::endl;

	start = clock();
	for (iter = largevector.begin(); iter != largevector.end(); ++iter) //prefix
		i = *iter;
	finish = clock();
	std::cout &lt;&lt; &quot;prefix: &quot; &lt;&lt; (double(finish)-double(start))/CLOCKS_PER_SEC &lt;&lt; std::endl;

   std::cin &gt;&gt; i;
   return 0;
}
</code></pre>
<p>Ergebnis auf meinem Schlepptop:</p>
<p>postfix: 0.391<br />
prefix: 0.093</p>
<p>Fazit für mich: Ab jetzt nur noch prefix (hab bisher auch - ohne nachzudenken - fast immer postfix benutzt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    />)</p>
<p>Wie groß die Zeitersparnis im Einzelfall ist hängt natürlich dann davon ab wie aufwändig der copy-constructor ist. Bei einem deep copy von arrays oder so kann das heftigst werden!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1939687</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1939687</guid><dc:creator><![CDATA[antialias]]></dc:creator><pubDate>Fri, 13 Aug 2010 14:53:12 GMT</pubDate></item><item><title><![CDATA[Reply to Zählvariable, via Prefix o. Postfix erhöhen ? on Fri, 13 Aug 2010 14:54:57 GMT]]></title><description><![CDATA[<p>Ist das auch im Release kompiliert? - Kann mir schwer vorstellen, dass der Unterschied so gross wird.</p>
<p>Man kann antürlich mal prinzipiell Prefix benutzen und nur Postfix, wenn man es wirklich braucht. Mache ich auch so.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1939689</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1939689</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Fri, 13 Aug 2010 14:54:57 GMT</pubDate></item><item><title><![CDATA[Reply to Zählvariable, via Prefix o. Postfix erhöhen ? on Fri, 13 Aug 2010 15:15:49 GMT]]></title><description><![CDATA[<p>ups..hast recht - war im debug</p>
<p>Um im release was zu sehen musste ich folgende Zeile ändern (sonst kam als Zeit '0' raus)</p>
<pre><code class="language-cpp">for (iter = largevector.begin(); iter != largevector.end(); iter++) // postfix
	i=*iter;
</code></pre>
<p>in</p>
<pre><code class="language-cpp">for (iter = largevector.begin(); iter != largevector.end(); iter++) // postfix
	for (iter2 = largevector.begin(); iter2 != largevector.end(); iter2++) 
		i=*iter;
</code></pre>
<p>(und entsprechend natürlich auch für prefix).</p>
<p>Ergebnis:<br />
postfix: 25.765<br />
prefix: 24.625</p>
<p>Scheint als ob der Copy-operator von STL-Iteratoren recht effizient ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1939698</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1939698</guid><dc:creator><![CDATA[antialias]]></dc:creator><pubDate>Fri, 13 Aug 2010 15:15:49 GMT</pubDate></item><item><title><![CDATA[Reply to Zählvariable, via Prefix o. Postfix erhöhen ? on Fri, 13 Aug 2010 15:29:31 GMT]]></title><description><![CDATA[<p>Das scheint mir schon eher realistisch. Und dieser Unterschied ist eigentlich zu vernachlässigen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1939702</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1939702</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Fri, 13 Aug 2010 15:29:31 GMT</pubDate></item><item><title><![CDATA[Reply to Zählvariable, via Prefix o. Postfix erhöhen ? on Fri, 13 Aug 2010 15:50:37 GMT]]></title><description><![CDATA[<p>Also ich finde fast 5% Performanceunterschied nicht zu verachten. Besonders wenn man an zeitkritischen Applikationen arbeitet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1939711</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1939711</guid><dc:creator><![CDATA[antialias]]></dc:creator><pubDate>Fri, 13 Aug 2010 15:50:37 GMT</pubDate></item><item><title><![CDATA[Reply to Zählvariable, via Prefix o. Postfix erhöhen ? on Fri, 13 Aug 2010 15:57:49 GMT]]></title><description><![CDATA[<p>antialias schrieb:</p>
<blockquote>
<p>Also ich finde fast 5% Performanceunterschied nicht zu verachten. Besonders wenn man an zeitkritischen Applikationen arbeitet.</p>
</blockquote>
<p>Da hast du schon recht, aber überleg mal wie realistisch dieses extrem Beispiel ist, wo das Programm nichts anderes macht, als jede Menge Zuweisungen.<br />
In keinem realistischen Programm wird die Performance von solch einfachen Operationen abhängen. Wenn man den kleinen Unterschied von Post/Prefix betrachtet, dann ist eine einzige Multiplikation schon extrem viel schlimmer. Geschweige denn von Output.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1939714</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1939714</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Fri, 13 Aug 2010 15:57:49 GMT</pubDate></item><item><title><![CDATA[Reply to Zählvariable, via Prefix o. Postfix erhöhen ? on Fri, 13 Aug 2010 16:02:36 GMT]]></title><description><![CDATA[<p>antialias schrieb:</p>
<blockquote>
<p>Also ich finde fast 5% Performanceunterschied nicht zu verachten. Besonders wenn man an zeitkritischen Applikationen arbeitet.</p>
</blockquote>
<p>Außerdem ist es ein vector-Iterator. Das ist ja praktisch nur ein gekapselter Zeiger. Bei komplizierteren Iteratoren wie dem von map<sup>*</sup>, könnte ich mir vorstellen, dass der Unterschied sogar noch größer als 5% ist, weil die Optimierung komplizierter ist.</p>
<p><sup>*</sup>: Bloß geraten, dass der kompliziert ist, kenne die Implementierung nicht. Jedenfalls wird es doch sicherlich Iteratoren geben, deren Zustand aus mehr als nur einem Pointer besteht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1939716</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1939716</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 13 Aug 2010 16:02:36 GMT</pubDate></item><item><title><![CDATA[Reply to Zählvariable, via Prefix o. Postfix erhöhen ? on Fri, 13 Aug 2010 20:22:56 GMT]]></title><description><![CDATA[<p>Sequenzen iteriert man im allgemeinen sowieso per for_each und transform.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1939809</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1939809</guid><dc:creator><![CDATA[dineki89]]></dc:creator><pubDate>Fri, 13 Aug 2010 20:22:56 GMT</pubDate></item><item><title><![CDATA[Reply to Zählvariable, via Prefix o. Postfix erhöhen ? on Fri, 13 Aug 2010 21:57:42 GMT]]></title><description><![CDATA[<p>dineki89 schrieb:</p>
<blockquote>
<p>Sequenzen iteriert man im allgemeinen sowieso per for_each und transform.</p>
</blockquote>
<p>nur in Spezialfällen, wenn man bereits alle Funktionen fertig rumfliegen hat. Im Allgemeinen ist for_each häßlicher als eine for-Schleife, wenn man erstmal einen Funktor zusammenbasteln muss.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1939830</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1939830</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Fri, 13 Aug 2010 21:57:42 GMT</pubDate></item><item><title><![CDATA[Reply to Zählvariable, via Prefix o. Postfix erhöhen ? on Fri, 13 Aug 2010 22:10:38 GMT]]></title><description><![CDATA[<p>dineki89 schrieb:</p>
<blockquote>
<p>Sequenzen iteriert man im allgemeinen sowieso per for_each und transform.</p>
</blockquote>
<p>Ich mache das nie, viel zu mühsam. Ich glaube auch nicht dass &quot;man&quot; das &quot;im allgemeinen&quot; so macht.</p>
<p>Ich verwende <code>for(size_t i ... i &lt; ... i++)</code> oder <code>BOOST_FOREACH</code> .<br />
(oder ganz selten mal Iteratoren &quot;zu Fuss&quot;, also ohne <code>BOOST_FOREACH</code> )</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1939831</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1939831</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Fri, 13 Aug 2010 22:10:38 GMT</pubDate></item><item><title><![CDATA[Reply to Zählvariable, via Prefix o. Postfix erhöhen ? on Sat, 14 Aug 2010 06:36:08 GMT]]></title><description><![CDATA[<p>otze schrieb:</p>
<blockquote>
<p>dineki89 schrieb:</p>
<blockquote>
<p>Sequenzen iteriert man im allgemeinen sowieso per for_each und transform.</p>
</blockquote>
<p>nur in Spezialfällen, wenn man bereits alle Funktionen fertig rumfliegen hat. Im Allgemeinen ist for_each häßlicher als eine for-Schleife, wenn man erstmal einen Funktor zusammenbasteln muss.</p>
</blockquote>
<p>Da dürfte sich mit den Lambdas von C++0x einiges Ändern.<br />
BTW: War jmd. in Rapperswil den Bjarne und Herb Sutter gucken?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1939873</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1939873</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Sat, 14 Aug 2010 06:36:08 GMT</pubDate></item><item><title><![CDATA[Reply to Zählvariable, via Prefix o. Postfix erhöhen ? on Sat, 14 Aug 2010 07:24:56 GMT]]></title><description><![CDATA[<p>theta schrieb:</p>
<blockquote>
<p>otze schrieb:</p>
<blockquote>
<p>dineki89 schrieb:</p>
<blockquote>
<p>Sequenzen iteriert man im allgemeinen sowieso per for_each und transform.</p>
</blockquote>
<p>nur in Spezialfällen, wenn man bereits alle Funktionen fertig rumfliegen hat. Im Allgemeinen ist for_each häßlicher als eine for-Schleife, wenn man erstmal einen Funktor zusammenbasteln muss.</p>
</blockquote>
<p>Da dürfte sich mit den Lambdas von C++0x einiges Ändern.</p>
</blockquote>
<p>Wie willst du den mit Lambdas das for_each verbessern?</p>
<blockquote>
<p>BTW: War jmd. in Rapperswil den Bjarne und Herb Sutter gucken?</p>
</blockquote>
<p>Natürlich nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1939880</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1939880</guid><dc:creator><![CDATA[www]]></dc:creator><pubDate>Sat, 14 Aug 2010 07:24:56 GMT</pubDate></item><item><title><![CDATA[Reply to Zählvariable, via Prefix o. Postfix erhöhen ? on Sat, 14 Aug 2010 07:30:30 GMT]]></title><description><![CDATA[<p>www schrieb:</p>
<blockquote>
<p>theta schrieb:</p>
<blockquote>
<p>otze schrieb:</p>
<blockquote>
<p>dineki89 schrieb:</p>
<blockquote>
<p>Sequenzen iteriert man im allgemeinen sowieso per for_each und transform.</p>
</blockquote>
<p>nur in Spezialfällen, wenn man bereits alle Funktionen fertig rumfliegen hat. Im Allgemeinen ist for_each häßlicher als eine for-Schleife, wenn man erstmal einen Funktor zusammenbasteln muss.</p>
</blockquote>
<p>Da dürfte sich mit den Lambdas von C++0x einiges Ändern.</p>
</blockquote>
<p>Wie willst du den mit Lambdas das for_each verbessern?</p>
</blockquote>
<p>Dadurch, dass keine Funktoren mehr nötig sind, welche (Codierungs) Overhead mitbringen und nicht so lokal wie gwünscht sind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1939882</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1939882</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Sat, 14 Aug 2010 07:30:30 GMT</pubDate></item><item><title><![CDATA[Reply to Zählvariable, via Prefix o. Postfix erhöhen ? on Sat, 14 Aug 2010 07:43:03 GMT]]></title><description><![CDATA[<p>Bei C++0x kann man auch gleich die &quot;range-based for&quot;-Schleife nehmen:</p>
<p><a href="http://en.wikipedia.org/wiki/C%2B%2B0x#Range-based_for-loop" rel="nofollow">http://en.wikipedia.org/wiki/C%2B%2B0x#Range-based_for-loop</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1939883</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1939883</guid><dc:creator><![CDATA[life]]></dc:creator><pubDate>Sat, 14 Aug 2010 07:43:03 GMT</pubDate></item><item><title><![CDATA[Reply to Zählvariable, via Prefix o. Postfix erhöhen ? on Sat, 14 Aug 2010 08:20:15 GMT]]></title><description><![CDATA[<p>theta schrieb:</p>
<blockquote>
<blockquote>
<p>Wie willst du den mit Lambdas das for_each verbessern?</p>
</blockquote>
<p>Dadurch, dass keine Funktoren mehr nötig sind, welche (Codierungs) Overhead mitbringen und nicht so lokal wie gwünscht sind.</p>
</blockquote>
<p>Dadurch wird for_each auch nicht viel besser, sieht nur total kryptisch aus. range-based for sieht schon viel besser aus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1939889</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1939889</guid><dc:creator><![CDATA[www]]></dc:creator><pubDate>Sat, 14 Aug 2010 08:20:15 GMT</pubDate></item><item><title><![CDATA[Reply to Zählvariable, via Prefix o. Postfix erhöhen ? on Sat, 14 Aug 2010 10:04:51 GMT]]></title><description><![CDATA[<p>wie du meinst...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1939920</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1939920</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Sat, 14 Aug 2010 10:04:51 GMT</pubDate></item></channel></rss>