<?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[Geschwindigkeit: If-Abfrage in Schleife]]></title><description><![CDATA[<p>Wenn ich solchen Code schreibe, habe ich immer ein schlechtes Gewissen:</p>
<pre><code class="language-cpp">const bool cond = ...
for (...) {
  foo();
  if (cond)
    bar();
  baz();
}
</code></pre>
<p>foo/bar/baz sind dabei in der Regel relativ schnell (wenn auch einige nichttriviale Codezeilen) und die Schleife kann relativ oft durchlaufen werden.</p>
<p>Kann ich das irgendwie optimieren ohne den Code zu verdoppeln?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/315923/geschwindigkeit-if-abfrage-in-schleife</link><generator>RSS for Node</generator><lastBuildDate>Thu, 30 Jul 2026 10:54:47 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/315923.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 16 Apr 2013 09:11:16 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Geschwindigkeit: If-Abfrage in Schleife on Tue, 16 Apr 2013 09:11:16 GMT]]></title><description><![CDATA[<p>Wenn ich solchen Code schreibe, habe ich immer ein schlechtes Gewissen:</p>
<pre><code class="language-cpp">const bool cond = ...
for (...) {
  foo();
  if (cond)
    bar();
  baz();
}
</code></pre>
<p>foo/bar/baz sind dabei in der Regel relativ schnell (wenn auch einige nichttriviale Codezeilen) und die Schleife kann relativ oft durchlaufen werden.</p>
<p>Kann ich das irgendwie optimieren ohne den Code zu verdoppeln?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2315804</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2315804</guid><dc:creator><![CDATA[needforspeed]]></dc:creator><pubDate>Tue, 16 Apr 2013 09:11:16 GMT</pubDate></item><item><title><![CDATA[Reply to Geschwindigkeit: If-Abfrage in Schleife on Tue, 16 Apr 2013 09:16:09 GMT]]></title><description><![CDATA[<p>Ich lehne mich jetzt mal weit aus dem Fenster und behaupte, dass der Compiler das schon optimieren könnte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2315806</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2315806</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Tue, 16 Apr 2013 09:16:09 GMT</pubDate></item><item><title><![CDATA[Reply to Geschwindigkeit: If-Abfrage in Schleife on Tue, 16 Apr 2013 09:44:03 GMT]]></title><description><![CDATA[<p>Naja, meiner (GCC) nicht, der das hier draus:</p>
<pre><code class="language-cpp">goto loop_start:
loop_end:
  baz();
  if (end_of_loop) goto loop_break;
loop_start:
  foo();
  if (b) goto loop_end;
  bar();
  baz();
  if (!end_of_loop) goto loop_start;
loop_break:;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2315818</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2315818</guid><dc:creator><![CDATA[needforspeed]]></dc:creator><pubDate>Tue, 16 Apr 2013 09:44:03 GMT</pubDate></item><item><title><![CDATA[Reply to Geschwindigkeit: If-Abfrage in Schleife on Tue, 16 Apr 2013 10:07:21 GMT]]></title><description><![CDATA[<p>needforspeed schrieb:</p>
<blockquote>
<p>Naja, meiner (GCC) nicht, der das hier draus:</p>
<pre><code class="language-cpp">goto loop_start:
loop_end:
  baz();
  if (end_of_loop) goto loop_break;
loop_start:
  foo();
  if (b) goto loop_end;
  bar();
  baz();
  if (!end_of_loop) goto loop_start;
loop_break:;
</code></pre>
</blockquote>
<p>Komisch, mein GCC macht daraus nämlich (bei cond = true;)</p>
<pre><code>loop_start:
foo();
bar();
baz();
goto loop_start;
</code></pre>
<p>Folgerung: Du hast Optimierungen gar nicht eingeschaltet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2315824</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2315824</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 16 Apr 2013 10:07:21 GMT</pubDate></item><item><title><![CDATA[Reply to Geschwindigkeit: If-Abfrage in Schleife on Tue, 16 Apr 2013 10:16:40 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Komisch, mein GCC macht daraus nämlich (bei cond = true;)</p>
</blockquote>
<p>cond ist nicht eine Compilezeitkonstante, sondern erst zur Laufzeit bekannt und dann auch von Aufruf zu aufruf verschieden. Es ist nur eine Loopinvariante.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2315830</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2315830</guid><dc:creator><![CDATA[needforspeed]]></dc:creator><pubDate>Tue, 16 Apr 2013 10:16:40 GMT</pubDate></item><item><title><![CDATA[Reply to Geschwindigkeit: If-Abfrage in Schleife on Tue, 16 Apr 2013 10:44:47 GMT]]></title><description><![CDATA[<p>Vollständiger Code, Compilerversion, Kommandozeilenoptionen?<br />
-funswitch-loops (aktiviert durch -O3) sollte hierfür zuständig sein<br />
Gut möglich nat. dass der Compiler trotzdem der Meinung ist, dass das Unterlassen dieser Optimierung besser ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2315834</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2315834</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Tue, 16 Apr 2013 10:44:47 GMT</pubDate></item><item><title><![CDATA[Reply to Geschwindigkeit: If-Abfrage in Schleife on Tue, 16 Apr 2013 11:12:36 GMT]]></title><description><![CDATA[<p>needforspeed schrieb:</p>
<blockquote>
<p>SeppJ schrieb:</p>
<blockquote>
<p>Komisch, mein GCC macht daraus nämlich (bei cond = true;)</p>
</blockquote>
<p>cond ist nicht eine Compilezeitkonstante, sondern erst zur Laufzeit bekannt und dann auch von Aufruf zu aufruf verschieden. Es ist nur eine Loopinvariante.</p>
</blockquote>
<p>Dann wird es bei mir (GCC 4.8, O3, x86_64) zu:</p>
<pre><code>if (cond)
{
 loop
 {
  foo; bar; baz;
 }
}
else
{
 loop
 {
  foo; baz;
 }
}
</code></pre>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> Das was camper gesagt hat.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2315840</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2315840</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 16 Apr 2013 11:12:36 GMT</pubDate></item><item><title><![CDATA[Reply to Geschwindigkeit: If-Abfrage in Schleife on Tue, 16 Apr 2013 13:37:30 GMT]]></title><description><![CDATA[<p>Nimm halt ein Template.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2315886</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2315886</guid><dc:creator><![CDATA[zfhrjc]]></dc:creator><pubDate>Tue, 16 Apr 2013 13:37:30 GMT</pubDate></item><item><title><![CDATA[Reply to Geschwindigkeit: If-Abfrage in Schleife on Tue, 16 Apr 2013 13:52:08 GMT]]></title><description><![CDATA[<p>zfhrjc schrieb:</p>
<blockquote>
<p>Nimm halt ein Template.</p>
</blockquote>
<p>needforspeed schrieb:</p>
<blockquote>
<p>cond ist nicht eine Compilezeitkonstante, sondern erst zur Laufzeit bekannt und dann auch von Aufruf zu aufruf verschieden. Es ist nur eine Loopinvariante.</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/2315890</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2315890</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 16 Apr 2013 13:52:08 GMT</pubDate></item></channel></rss>