<?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[Schon wieder Microoptimierung???? [xor oder assign? index oder pointer?]]]></title><description><![CDATA[<p>Hallo,<br />
ich schreibe gerade eine Klasse für sehr große Zahlen. Dafür muss ich lange arrays aus size_t auf 0 setzten. Welche Variante sollte ich verwenden?</p>
<pre><code class="language-cpp">for(size_t i = 0;i!=array_ende;++i)
{
    array[i] = 0;
    array[i] ^= array[i];
}
for(size_t * p = anfang; p!=ende; ++p)
{
   *p = 0;
   *p ^= *p;
}
</code></pre>
<p>Gibt xor mit sich selbst Performance Vorteile gegenüber assign mit null? Sollte man index operatoren zum Zugriff auf arrayelemente benutzen oder zeiger? Und ja, es geht hier um zeitkritische Bereiche in meinem Programm <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/topic/256159/schon-wieder-microoptimierung-xor-oder-assign-index-oder-pointer</link><generator>RSS for Node</generator><lastBuildDate>Fri, 11 Sep 2026 08:35:23 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/256159.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 09 Dec 2009 00:55:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Schon wieder Microoptimierung???? [xor oder assign? index oder pointer?] on Wed, 09 Dec 2009 00:55:23 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich schreibe gerade eine Klasse für sehr große Zahlen. Dafür muss ich lange arrays aus size_t auf 0 setzten. Welche Variante sollte ich verwenden?</p>
<pre><code class="language-cpp">for(size_t i = 0;i!=array_ende;++i)
{
    array[i] = 0;
    array[i] ^= array[i];
}
for(size_t * p = anfang; p!=ende; ++p)
{
   *p = 0;
   *p ^= *p;
}
</code></pre>
<p>Gibt xor mit sich selbst Performance Vorteile gegenüber assign mit null? Sollte man index operatoren zum Zugriff auf arrayelemente benutzen oder zeiger? Und ja, es geht hier um zeitkritische Bereiche in meinem Programm <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/1819893</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1819893</guid><dc:creator><![CDATA[Alastair]]></dc:creator><pubDate>Wed, 09 Dec 2009 00:55:23 GMT</pubDate></item><item><title><![CDATA[Reply to Schon wieder Microoptimierung???? [xor oder assign? index oder pointer?] on Wed, 09 Dec 2009 01:16:43 GMT]]></title><description><![CDATA[<p>allgemein sind indexzugriffe besser, weil sie die tendenz haben mit umliegendem code den druck auf die register zu senken. der a^=a-Trick bringt nur was bei registern. hier liest du erst aus dem ram, rechnest was und schreibst dann, statt nur zu schreiben.<br />
aber das alles ist völlig irrelevant. die normalste füllschleife erkennt dein compiler am ehesten, denkt sich sein memset und haut optimalen code raus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1819894</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1819894</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Wed, 09 Dec 2009 01:16:43 GMT</pubDate></item><item><title><![CDATA[Reply to Schon wieder Microoptimierung???? [xor oder assign? index oder pointer?] on Wed, 09 Dec 2009 08:42:13 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>die normalste füllschleife erkennt dein compiler am ehesten, denkt sich sein memset und haut optimalen code raus.</p>
</blockquote>
<p>In dem Fall darf man doch durchaus auch selbst auf memset zurückgreifen wenn man dem Compiler das &quot;Erraten&quot; nicht zutraut - bzw. erzeugten Code unter voller Optimierung vergleichen und die beste Variante auswählen.</p>
<pre><code class="language-cpp">memset(array, 0, array_ende*sizeof(array[0]));
memset(p, 0, (ende-anfang)*sizeof(*p));
</code></pre>
<p>Oder nicht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1819934</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1819934</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Wed, 09 Dec 2009 08:42:13 GMT</pubDate></item><item><title><![CDATA[Reply to Schon wieder Microoptimierung???? [xor oder assign? index oder pointer?] on Wed, 09 Dec 2009 08:59:24 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>Oder nicht?</p>
</blockquote>
<p>Meine Begründungen und Alastairs Trieb führen zwangsläufig zu pumuckls Vorgehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1819938</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1819938</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Wed, 09 Dec 2009 08:59:24 GMT</pubDate></item><item><title><![CDATA[Reply to Schon wieder Microoptimierung???? [xor oder assign? index oder pointer?] on Wed, 09 Dec 2009 11:09:46 GMT]]></title><description><![CDATA[<p>Oder du benutzt std::fill, da erkennt der Compiler automatisch den Typ und die Grösse des zu füllenden Bereichs. Wenn die STL auch noch schlau ist und PODs erkennt wird sie ebenfalls ein memset benutzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1820006</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1820006</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Wed, 09 Dec 2009 11:09:46 GMT</pubDate></item><item><title><![CDATA[Reply to Schon wieder Microoptimierung???? [xor oder assign? index oder pointer?] on Wed, 09 Dec 2009 13:09:35 GMT]]></title><description><![CDATA[<p>@Alastair:<br />
du hast mächtig einen an der klatsche.<br />
schreib das was du machen willst. wenn du was auf null setzen willst, schreib &quot;= 0&quot;.<br />
der compiler wird schon wissen was schneller ist, XOR oder MOV.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1820072</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1820072</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 09 Dec 2009 13:09:35 GMT</pubDate></item><item><title><![CDATA[Reply to Schon wieder Microoptimierung???? [xor oder assign? index oder pointer?] on Thu, 10 Dec 2009 22:23:55 GMT]]></title><description><![CDATA[<p>Nachdem meine Fragen hier so gut ankamen, habe ich gleich noch eine:<br />
welche Schreibweise würdet ihr bevorzugen?</p>
<pre><code class="language-cpp">const unsigned int flip = ~0;

void flip_bits(unsigned int arr[])
{
   for(unsigned int i=0;i!=array_groesse;++i)
      arr[i]=~arr[i];
      //oder
      arr^=flip;
}
</code></pre>
<p>Bei der zweiten Methode würde man zumindest eine temporäre Variable sparen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1820992</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1820992</guid><dc:creator><![CDATA[Alastair]]></dc:creator><pubDate>Thu, 10 Dec 2009 22:23:55 GMT</pubDate></item><item><title><![CDATA[Reply to Schon wieder Microoptimierung???? [xor oder assign? index oder pointer?] on Thu, 10 Dec 2009 22:24:55 GMT]]></title><description><![CDATA[<p>edit: es muss natürlich arr[i]^=flip heißen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1820993</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1820993</guid><dc:creator><![CDATA[Alastair]]></dc:creator><pubDate>Thu, 10 Dec 2009 22:24:55 GMT</pubDate></item><item><title><![CDATA[Reply to Schon wieder Microoptimierung???? [xor oder assign? index oder pointer?] on Thu, 10 Dec 2009 22:34:09 GMT]]></title><description><![CDATA[<p>Hier stand Mist.</p>
<p>MfG SideWinder</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1820997</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1820997</guid><dc:creator><![CDATA[SideWinder]]></dc:creator><pubDate>Thu, 10 Dec 2009 22:34:09 GMT</pubDate></item><item><title><![CDATA[Reply to Schon wieder Microoptimierung???? [xor oder assign? index oder pointer?] on Thu, 10 Dec 2009 23:03:07 GMT]]></title><description><![CDATA[<p>die frage kannst du dir selbst beantworten.</p>
<p>übersetz die anweisung die da steht einfach mal auf deutsch. beide varianten.<br />
das, was dann weniger kompliziert klingt, ist auch die bessere variante code zu schreiben. wenn nicht meistens, dann zumindest in diesem fall.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1821007</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1821007</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 10 Dec 2009 23:03:07 GMT</pubDate></item><item><title><![CDATA[Reply to Schon wieder Microoptimierung???? [xor oder assign? index oder pointer?] on Thu, 10 Dec 2009 23:07:11 GMT]]></title><description><![CDATA[<p>Also werden beide Varianten in den exakt gleichen Maschinencode optimiert?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1821012</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1821012</guid><dc:creator><![CDATA[Alastair]]></dc:creator><pubDate>Thu, 10 Dec 2009 23:07:11 GMT</pubDate></item><item><title><![CDATA[Reply to Schon wieder Microoptimierung???? [xor oder assign? index oder pointer?] on Thu, 10 Dec 2009 23:21:28 GMT]]></title><description><![CDATA[<p>Alastair schrieb:</p>
<blockquote>
<p>Also werden beide Varianten in den exakt gleichen Maschinencode optimiert?</p>
</blockquote>
<p>Das musste selber prüfen, wir kennen ja schließlich deinen Compiler nicht. Aber wahrscheinlich ja. Genauso wie das meiste andere vermeintliche Mikrooptimierungszeug.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1821015</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1821015</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 10 Dec 2009 23:21:28 GMT</pubDate></item><item><title><![CDATA[Reply to Schon wieder Microoptimierung???? [xor oder assign? index oder pointer?] on Fri, 11 Dec 2009 06:49:26 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Alastair schrieb:</p>
<blockquote>
<p>Also werden beide Varianten in den exakt gleichen Maschinencode optimiert?</p>
</blockquote>
<p>Das musste selber prüfen,</p>
</blockquote>
<p>Und zwar auf jeder Zielplattform (OS, CPU,...) und mit jedem Zielcompiler. Viel Spaß bei den #ifdef's.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1821052</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1821052</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Fri, 11 Dec 2009 06:49:26 GMT</pubDate></item></channel></rss>