<?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[Performance von bools &#x2F; Operationen auf bools]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>Ich arbeite unter VS2005 (also sizeof(bool) = 1) und ich wollte wissen, wie die Performance von bools ist. Wird ein bool denn bei der Kompilierung automatisch in ein Integer verwandelt oder passiert zur Laufzeit eine Konvertierung?<br />
Ist eine boolsche Operation wie</p>
<pre><code class="language-cpp">bool x = a || (b &amp;&amp; c) || (d &amp;&amp; e)
</code></pre>
<p>(angenommen a,b,c,d,e sind auch bools)<br />
von der Performance her ähnlich wie</p>
<pre><code class="language-cpp">char x = a + (b * c) + (d * e)
</code></pre>
<p>(angenommen a,b,c,d,e sind signed chars) und dann einfach überprüfen ob x &gt; 0 für true?</p>
<p>Wäre es besser das ganze in ein 32 Bit int zu packen (32 Bit Architektur angenommen)</p>
<p>Oder soll man lieber die Finger von solchen Optimierungen lassen und die Aufgabe dem Compiler überlassen weil er das sowieso viel besser kann?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/178503/performance-von-bools-operationen-auf-bools</link><generator>RSS for Node</generator><lastBuildDate>Sun, 20 Sep 2026 22:09:20 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/178503.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 11 Apr 2007 18:03:09 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Performance von bools &#x2F; Operationen auf bools on Wed, 11 Apr 2007 18:03:09 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>Ich arbeite unter VS2005 (also sizeof(bool) = 1) und ich wollte wissen, wie die Performance von bools ist. Wird ein bool denn bei der Kompilierung automatisch in ein Integer verwandelt oder passiert zur Laufzeit eine Konvertierung?<br />
Ist eine boolsche Operation wie</p>
<pre><code class="language-cpp">bool x = a || (b &amp;&amp; c) || (d &amp;&amp; e)
</code></pre>
<p>(angenommen a,b,c,d,e sind auch bools)<br />
von der Performance her ähnlich wie</p>
<pre><code class="language-cpp">char x = a + (b * c) + (d * e)
</code></pre>
<p>(angenommen a,b,c,d,e sind signed chars) und dann einfach überprüfen ob x &gt; 0 für true?</p>
<p>Wäre es besser das ganze in ein 32 Bit int zu packen (32 Bit Architektur angenommen)</p>
<p>Oder soll man lieber die Finger von solchen Optimierungen lassen und die Aufgabe dem Compiler überlassen weil er das sowieso viel besser kann?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1264076</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1264076</guid><dc:creator><![CDATA[pub00515]]></dc:creator><pubDate>Wed, 11 Apr 2007 18:03:09 GMT</pubDate></item><item><title><![CDATA[Reply to Performance von bools &#x2F; Operationen auf bools on Wed, 11 Apr 2007 18:16:03 GMT]]></title><description><![CDATA[<p>pub00515 schrieb:</p>
<blockquote>
<p>Oder soll man lieber die Finger von solchen Optimierungen lassen und die Aufgabe dem Compiler überlassen weil er das sowieso viel besser kann?</p>
</blockquote>
<p>Definitiv.<br />
Lass den Code mal schön so, dass er eine ordentliche Aussagekraft hat.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1264086</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1264086</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Wed, 11 Apr 2007 18:16:03 GMT</pubDate></item><item><title><![CDATA[Reply to Performance von bools &#x2F; Operationen auf bools on Wed, 11 Apr 2007 18:19:43 GMT]]></title><description><![CDATA[<blockquote>
<p>Wird ein bool denn bei der Kompilierung automatisch in ein Integer verwandelt oder passiert zur Laufzeit eine Konvertierung?</p>
</blockquote>
<p>wozu denn überhaupt irgendwelche konvertierungen? ich dachte, 1 bool würde genau in ein halbes register passen? oder ist es mittlerweile so, dass weder prozessoren noch RAM mit einzelnen bytes arbeiten? <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1264088</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1264088</guid><dc:creator><![CDATA[Andrey]]></dc:creator><pubDate>Wed, 11 Apr 2007 18:19:43 GMT</pubDate></item><item><title><![CDATA[Reply to Performance von bools &#x2F; Operationen auf bools on Wed, 11 Apr 2007 21:49:43 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/11352">@pub00515</a>: überlass es dem Compiler, und verwende die Typen die &quot;logisch&quot; sind. Konvertiert wird (wenn nötig) bei der Zuweisung int -&gt; bool, da der Compiler sonst oft nicht sicherstellen kann dass das bool entweder 1 oder 0 ist aber sonst nix. z.B. folgender Code wird konvertieren müssen:</p>
<pre><code class="language-cpp">int foo(int x)
{
    bool b = x;
    return b; // wieder nach int
}
</code></pre>
<p>Das Ergebnis von &quot;foo&quot; darf auch nach der Rückwandlung nach &quot;int&quot; nur 1 oder 0 sein, daher müssen alle Werte ausser 0 auf 1 abgebildet werden.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/13810">@Andrey</a>: wie ein bool intern abgebildet wird ist AFAIK nicht spezifiziert (kann also der Compiler machen wie er mag). Oft wird ein Byte verwendet, manche Compiler machen aber auch einfach nen int draus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1264228</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1264228</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 11 Apr 2007 21:49:43 GMT</pubDate></item></channel></rss>