<?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[Gehts noch schneller ...?]]></title><description><![CDATA[<p>Mich würde mal interresieren ob ihr eine schneller oder eleganter Lösung<br />
für mein Problem habt.</p>
<p>Folgendes:<br />
Es gibt ein unsigned char Puffer in den eine Grafik in 8Bit Farben steckt.<br />
Dieser Puffer soll nach 16 oder 32 Bit Konvertiert werden.<br />
Nun gibt es eine Farbtabelle (Palette) die die RGB Werte enthält.</p>
<p>Ich mache nun Folgendes ...</p>
<p>nach 16Bit</p>
<pre><code class="language-cpp">unsigned char _8BitPuffer[1000];
unsigned short _16BitBuffer[1000];
unsigned short _Pallette16Bit[256];

for (int i=0;i&lt;1000;i++) _16BitPuffer[i]=_Pallette16Bit[_8BitPuffer[i&rsqb;&rsqb;;
</code></pre>
<p>nach 32Bit</p>
<pre><code class="language-cpp">unsigned char _8BitPuffer[1000];
DWORD _32BitBuffer[1000];
DWORD _Pallette32Bit[256];

for (int i=0;i&lt;1000;i++) _32BitPuffer[i]=_Pallette32Bit[_8BitPuffer[i&rsqb;&rsqb;;
</code></pre>
<p>Mich würde mal interresieren ob man da noch was Optimieren kann?<br />
Bin gespannt auf eure Komentare</p>
<p>AndOne</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/220823/gehts-noch-schneller</link><generator>RSS for Node</generator><lastBuildDate>Tue, 06 Oct 2026 16:58:16 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/220823.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 21 Aug 2008 14:42:52 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Gehts noch schneller ...? on Thu, 21 Aug 2008 14:46:55 GMT]]></title><description><![CDATA[<p>Mich würde mal interresieren ob ihr eine schneller oder eleganter Lösung<br />
für mein Problem habt.</p>
<p>Folgendes:<br />
Es gibt ein unsigned char Puffer in den eine Grafik in 8Bit Farben steckt.<br />
Dieser Puffer soll nach 16 oder 32 Bit Konvertiert werden.<br />
Nun gibt es eine Farbtabelle (Palette) die die RGB Werte enthält.</p>
<p>Ich mache nun Folgendes ...</p>
<p>nach 16Bit</p>
<pre><code class="language-cpp">unsigned char _8BitPuffer[1000];
unsigned short _16BitBuffer[1000];
unsigned short _Pallette16Bit[256];

for (int i=0;i&lt;1000;i++) _16BitPuffer[i]=_Pallette16Bit[_8BitPuffer[i&rsqb;&rsqb;;
</code></pre>
<p>nach 32Bit</p>
<pre><code class="language-cpp">unsigned char _8BitPuffer[1000];
DWORD _32BitBuffer[1000];
DWORD _Pallette32Bit[256];

for (int i=0;i&lt;1000;i++) _32BitPuffer[i]=_Pallette32Bit[_8BitPuffer[i&rsqb;&rsqb;;
</code></pre>
<p>Mich würde mal interresieren ob man da noch was Optimieren kann?<br />
Bin gespannt auf eure Komentare</p>
<p>AndOne</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1568995</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1568995</guid><dc:creator><![CDATA[AndOne]]></dc:creator><pubDate>Thu, 21 Aug 2008 14:46:55 GMT</pubDate></item><item><title><![CDATA[Reply to Gehts noch schneller ...? on Thu, 21 Aug 2008 15:23:37 GMT]]></title><description><![CDATA[<p>Ja, benutze ++i statt i++ ! Schau mal hier:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-39454.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-39454.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1569027</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1569027</guid><dc:creator><![CDATA[MiP]]></dc:creator><pubDate>Thu, 21 Aug 2008 15:23:37 GMT</pubDate></item><item><title><![CDATA[Reply to Gehts noch schneller ...? on Thu, 21 Aug 2008 15:24:35 GMT]]></title><description><![CDATA[<p>MiP schrieb:</p>
<blockquote>
<p>Ja, benutze ++i statt i++ ! Schau mal hier:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-39454.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-39454.html</a></p>
</blockquote>
<p>Spielt bei Built-Ins keine Rolle, aber wenn man sich Preincrement angewöhnt, dann benutzt man ihn auch automatisch bei anderen Typen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1569028</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1569028</guid><dc:creator><![CDATA[Tippgeber]]></dc:creator><pubDate>Thu, 21 Aug 2008 15:24:35 GMT</pubDate></item><item><title><![CDATA[Reply to Gehts noch schneller ...? on Thu, 21 Aug 2008 15:30:20 GMT]]></title><description><![CDATA[<p>Oh, muss ich zu meiner Schande gestehen das mit dem ++i kannt ich bisher garnicht.<br />
Werds mir mal anschauen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1569032</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1569032</guid><dc:creator><![CDATA[AndOne]]></dc:creator><pubDate>Thu, 21 Aug 2008 15:30:20 GMT</pubDate></item><item><title><![CDATA[Reply to Gehts noch schneller ...? on Thu, 21 Aug 2008 17:27:39 GMT]]></title><description><![CDATA[<p>@OP: Ich glaube nicht dass man da noch was rausholen kann.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/18651">@MiP</a>: Das ist jetzt aber nicht ernst gemeint???</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1569115</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1569115</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 21 Aug 2008 17:27:39 GMT</pubDate></item><item><title><![CDATA[Reply to Gehts noch schneller ...? on Thu, 21 Aug 2008 17:32:43 GMT]]></title><description><![CDATA[<p>Das einzige, was mir noch einfiele, wäre zu parallelisieren. Das geht in dem Beispiel recht gut. Allerdings wäre wohl bei einer so geringen Datenmenge (1000 Byte =&gt; 4000 Byte) der Aufwand zur Erstellung der Threads größer als der Gewinn an Schnelligkeit. Vielleicht solltest du es einfach mal messen.</p>
<p>Gruß<br />
Don06</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1569119</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1569119</guid><dc:creator><![CDATA[Don06]]></dc:creator><pubDate>Thu, 21 Aug 2008 17:32:43 GMT</pubDate></item><item><title><![CDATA[Reply to Gehts noch schneller ...? on Thu, 21 Aug 2008 17:35:19 GMT]]></title><description><![CDATA[<p>das mit den 1000 bytes war nur ein Beispiel, in der Praxis sind das dann so 157248<br />
Bytes. Das merkt man dann schon denk ich, das ganze muss 50mal in der sek passieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1569121</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1569121</guid><dc:creator><![CDATA[AndOne]]></dc:creator><pubDate>Thu, 21 Aug 2008 17:35:19 GMT</pubDate></item><item><title><![CDATA[Reply to Gehts noch schneller ...? on Thu, 21 Aug 2008 20:34:34 GMT]]></title><description><![CDATA[<p>Je nach Anwendung ließe sich auch mmx, sse* oder so benutzen. Also keine Threads sondern direkte parallele Berechnung in der Hardware. Was das ganze natürlich nicht wirklich portabel machen würde. OpenMP würde die parallelisierung von Schleifen sehr einfach machen, aber es muss abgewägt werden, ob das was bringt (mehrere CPUs?).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1569217</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1569217</guid><dc:creator><![CDATA[lagalopex]]></dc:creator><pubDate>Thu, 21 Aug 2008 20:34:34 GMT</pubDate></item><item><title><![CDATA[Reply to Gehts noch schneller ...? on Fri, 22 Aug 2008 03:28:37 GMT]]></title><description><![CDATA[<p>welche IDE verwendest du? compilier das mal im release modes, dann müsste das machbar sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1569273</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1569273</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Fri, 22 Aug 2008 03:28:37 GMT</pubDate></item><item><title><![CDATA[Reply to Gehts noch schneller ...? on Fri, 22 Aug 2008 07:13:22 GMT]]></title><description><![CDATA[<p>Vielleicht schneller:</p>
<pre><code class="language-cpp">unsigned char _8BitPuffer[1000];
unsigned short _16BitBuffer[1000];
unsigned short _Pallette16Bit[256];

unsigned char *8BitPtr = _8BitPuffer;
unsigned char *16BitPtr = _16BitBuffer;

for (int i=0;i&lt;1000;i++) *(16BitPtr++) =_Pallette16Bit[*(8BitPtr++)];
</code></pre>
<p>oder gar:</p>
<pre><code class="language-cpp">unsigned char _8BitPuffer[1000];
unsigned short _16BitBuffer[1000];
unsigned short _Pallette16Bit[256];

unsigned char *8BitPtr = _8BitPuffer;
unsigned char *16BitPtr = _16BitBuffer;

for (int i=0;i&lt;500;i++){
  *(16BitPtr++) =_Pallette16Bit[*(8BitPtr++)];
  *(16BitPtr++) =_Pallette16Bit[*(8BitPtr++)];
}
</code></pre>
<p>Wobei die Schleife an sich wohl kaum Zeit verbrät.</p>
<p>Oder Duff's Device:</p>
<pre><code class="language-cpp">unsigned char _8BitPuffer[1000];
unsigned short _16BitBuffer[1000];
unsigned short _Pallette16Bit[256];

unsigned char *8BitPtr = _8BitPuffer;
unsigned char *16BitPtr = _16BitBuffer;

    int count = 1000;

    int n = (count + 7) / 8;
    switch (count % 8) {
    case 0: do { *(16BitPtr++) = _Pallette16Bit[*(8BitPtr++)];
    case 7:      *(16BitPtr++) = _Pallette16Bit[*(8BitPtr++)];
    case 6:      *(16BitPtr++) = _Pallette16Bit[*(8BitPtr++)];
    case 5:      *(16BitPtr++) = _Pallette16Bit[*(8BitPtr++)];
    case 4:      *(16BitPtr++) = _Pallette16Bit[*(8BitPtr++)];
    case 3:      *(16BitPtr++) = _Pallette16Bit[*(8BitPtr++)];
    case 2:      *(16BitPtr++) = _Pallette16Bit[*(8BitPtr++)];
    case 1:      *(16BitPtr++) = _Pallette16Bit[*(8BitPtr++)];
               } while (--n &gt; 0);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1569333</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1569333</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Fri, 22 Aug 2008 07:13:22 GMT</pubDate></item><item><title><![CDATA[Reply to Gehts noch schneller ...? on Fri, 22 Aug 2008 07:32:07 GMT]]></title><description><![CDATA[<p><a href="http://msdn.microsoft.com/de-de/library/26td21ds.aspx" rel="nofollow">http://msdn.microsoft.com/de-de/library/26td21ds.aspx</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1569343</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1569343</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Fri, 22 Aug 2008 07:32:07 GMT</pubDate></item><item><title><![CDATA[Reply to Gehts noch schneller ...? on Fri, 22 Aug 2008 12:31:34 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/17700">@Fellhuhn</a>, werd mal nachher das ganze messen. Mal kucken obs damit wirklich<br />
schneller geht, meld mich dann mit den Ergebnissen.</p>
<p>Thorsten</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1569596</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1569596</guid><dc:creator><![CDATA[AndOne]]></dc:creator><pubDate>Fri, 22 Aug 2008 12:31:34 GMT</pubDate></item></channel></rss>