<?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 switch]]></title><description><![CDATA[<p>Hi,<br />
ich stehe derzeit vor folgendem Problem:<br />
Ich habe eine Funktion, die je nach Eingabeparameter unterschiedliche Operationen durchführt, die auch recht umfangreich werden können. Nun muss ich die Eingabeparameter auswerten und dann die entsprechende Operation (die ich vermutlich noch in eigene Funktionen auslagern werde) aufrufe.<br />
Einfach ausgedrückt:</p>
<pre><code class="language-cpp">SoRResult process(SoRID pId, short pParam1, short pParam2)
{
    switch(pID)
    {
        case ID1:
            return Funktion1(pParam1);
        case ID2:
            return Funktion2(pParam1, pParam2);
        // ne ganze Menge weiterer Funktionsaufrufe //
        default:
            return Empty;
    }
}
</code></pre>
<p>Da das Projekt sehr performanceabhängig ist, würde ich jetzt gerne wissen, ob man das vielleicht irgendwie optimieren kann oder ob es eine andere Alternative gibt.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/156011/performance-von-switch</link><generator>RSS for Node</generator><lastBuildDate>Tue, 08 Sep 2026 18:09:58 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/156011.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 12 Aug 2006 00:11:52 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Performance von switch on Sat, 12 Aug 2006 00:11:52 GMT]]></title><description><![CDATA[<p>Hi,<br />
ich stehe derzeit vor folgendem Problem:<br />
Ich habe eine Funktion, die je nach Eingabeparameter unterschiedliche Operationen durchführt, die auch recht umfangreich werden können. Nun muss ich die Eingabeparameter auswerten und dann die entsprechende Operation (die ich vermutlich noch in eigene Funktionen auslagern werde) aufrufe.<br />
Einfach ausgedrückt:</p>
<pre><code class="language-cpp">SoRResult process(SoRID pId, short pParam1, short pParam2)
{
    switch(pID)
    {
        case ID1:
            return Funktion1(pParam1);
        case ID2:
            return Funktion2(pParam1, pParam2);
        // ne ganze Menge weiterer Funktionsaufrufe //
        default:
            return Empty;
    }
}
</code></pre>
<p>Da das Projekt sehr performanceabhängig ist, würde ich jetzt gerne wissen, ob man das vielleicht irgendwie optimieren kann oder ob es eine andere Alternative gibt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1115726</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1115726</guid><dc:creator><![CDATA[MarcoAtWork]]></dc:creator><pubDate>Sat, 12 Aug 2006 00:11:52 GMT</pubDate></item><item><title><![CDATA[Reply to Performance von switch on Sat, 12 Aug 2006 00:27:06 GMT]]></title><description><![CDATA[<p>Wenn es wirklcih eine ganze Menge weiterer Aufrufe sind, schau, dass alle Funktionen die selbe Anzahl an Parametern haben.</p>
<p>Dann kannst du mit einem Array von Funktionspointern arbeiten und bin schneller als die Feuerwehr:</p>
<pre><code class="language-cpp">// könnten fehler drin sien, ungetestet und so

// init
SoRREsult (*BlubbFunc) (short, short);
BlubbFunc funcs [size];

funcs[0] = Funktion1;
funcs[1] = Funktion2;

inline SoRResult process(SoRID pId, short pParam1, short pParam2)
{
    return funcs[pId](pParam1,pParam2);
}
</code></pre>
<p>MfG SideWinder</p>
<p>BTW: Ungarische Notation ist - wie würde Jimmy Pop sagen - homosexuell.</p>
<p>BTW2: Hatten wir nicht heute schonmal ein Problem mit einem Wort das Homosexualität als schlecht darstellt? Ich diskriminiere niemanden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1115739</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1115739</guid><dc:creator><![CDATA[SideWinder]]></dc:creator><pubDate>Sat, 12 Aug 2006 00:27:06 GMT</pubDate></item><item><title><![CDATA[Reply to Performance von switch on Sat, 12 Aug 2006 01:50:33 GMT]]></title><description><![CDATA[<p>switch-Konstrukte werden idR durch jump-Tables realisiert, daher sollte die Performance nicht all zu schlecht sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1115748</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1115748</guid><dc:creator><![CDATA[Neku]]></dc:creator><pubDate>Sat, 12 Aug 2006 01:50:33 GMT</pubDate></item><item><title><![CDATA[Reply to Performance von switch on Sat, 12 Aug 2006 01:57:30 GMT]]></title><description><![CDATA[<p>SideWinder schrieb:</p>
<blockquote>
<p>...</p>
<p>BTW: Ungarische Notation ist - wie würde Jimmy Pop sagen - homosexuell.</p>
<p>BTW2: Hatten wir nicht heute schonmal ein Problem mit einem Wort das Homosexualität als schlecht darstellt? Ich diskriminiere niemanden.</p>
</blockquote>
<p>Findest du nun Ungarische Notation gut oder schlecht??</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1115751</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1115751</guid><dc:creator><![CDATA[THX 1138]]></dc:creator><pubDate>Sat, 12 Aug 2006 01:57:30 GMT</pubDate></item><item><title><![CDATA[Reply to Performance von switch on Sat, 12 Aug 2006 02:00:37 GMT]]></title><description><![CDATA[<p>Schlecht.</p>
<p>MfG SideWinder</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1115752</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1115752</guid><dc:creator><![CDATA[SideWinder]]></dc:creator><pubDate>Sat, 12 Aug 2006 02:00:37 GMT</pubDate></item><item><title><![CDATA[Reply to Performance von switch on Sat, 12 Aug 2006 02:14:30 GMT]]></title><description><![CDATA[<p>SideWinder schrieb:</p>
<blockquote>
<p>Schlecht.</p>
<p>MfG SideWinder</p>
</blockquote>
<p>Genau UN kannste Dir in den Arsch schieben!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1115757</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1115757</guid><dc:creator><![CDATA[THX 1138]]></dc:creator><pubDate>Sat, 12 Aug 2006 02:14:30 GMT</pubDate></item><item><title><![CDATA[Reply to Performance von switch on Sat, 12 Aug 2006 05:37:30 GMT]]></title><description><![CDATA[<p>SideWinder schrieb:</p>
<blockquote>
<p>Wenn es wirklcih eine ganze Menge weiterer Aufrufe sind, schau, dass alle Funktionen die selbe Anzahl an Parametern haben.<br />
Dann kannst du mit einem Array von Funktionspointern arbeiten und bin schneller als die Feuerwehr:</p>
</blockquote>
<p>switch ist schneller als dein array.<br />
bei switch sollte man natürlich darauf achten, daß die IDs bei 0 beginnen und fortlaufend sind, damit's von dem gleichen vortiele-tellerchen essen kann. außerdem tut ein default: __assume(false); auch ganz gut, wenn man sich's leisten kann (entspricht ungefähr dem assert(ID&gt;=0 &amp;&amp; ID&lt;=MAXID)).<br />
switch ist deswegen schneller, weils die kleinen funktionsaufrufe auch inline läßt und hier kann der optimierer zuschlagen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1115770</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1115770</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sat, 12 Aug 2006 05:37:30 GMT</pubDate></item><item><title><![CDATA[Reply to Performance von switch on Sat, 12 Aug 2006 09:54:09 GMT]]></title><description><![CDATA[<p>switch wird fast immer mit einer Sprungtabelle (manchmal auch ein baum), aufgebaut, wodurch das suchen des passenden codes extrem schnell von statten geht</p>
<p>wenn du maximale performance willst, dann nimm ein switch und sorg dafür, dass die implementierung der funktionen in diesem modul sichtbar sind, dann sind die chancen optimal für gute compilerarbeit</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1115844</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1115844</guid><dc:creator><![CDATA[dragon90#]]></dc:creator><pubDate>Sat, 12 Aug 2006 09:54:09 GMT</pubDate></item><item><title><![CDATA[Reply to Performance von switch on Sat, 12 Aug 2006 11:02:05 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>SideWinder schrieb:</p>
<blockquote>
<p>Wenn es wirklcih eine ganze Menge weiterer Aufrufe sind, schau, dass alle Funktionen die selbe Anzahl an Parametern haben.<br />
Dann kannst du mit einem Array von Funktionspointern arbeiten und bin schneller als die Feuerwehr:</p>
</blockquote>
<p>switch ist schneller als dein array.<br />
bei switch sollte man natürlich darauf achten, daß die IDs bei 0 beginnen und fortlaufend sind, damit's von dem gleichen vortiele-tellerchen essen kann. außerdem tut ein default: __assume(false); auch ganz gut, wenn man sich's leisten kann (entspricht ungefähr dem assert(ID&gt;=0 &amp;&amp; ID&lt;=MAXID)).<br />
switch ist deswegen schneller, weils die kleinen funktionsaufrufe auch inline läßt und hier kann der optimierer zuschlagen.</p>
</blockquote>
<p>Oh, switch ist noch besser als ich dachte. Gut zu wissen, danke.</p>
<p>MfG SideWinder</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1115907</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1115907</guid><dc:creator><![CDATA[SideWinder]]></dc:creator><pubDate>Sat, 12 Aug 2006 11:02:05 GMT</pubDate></item><item><title><![CDATA[Reply to Performance von switch on Sat, 12 Aug 2006 11:58:20 GMT]]></title><description><![CDATA[<p>Fein, dann lag ich doch nicht so falsch. Hatte nur befürchtet, dass switch linear abgearbeitet wird, was alles andere als gut gewesen wäre.<br />
Ich bedanke mich für die schnellen Antworten.</p>
<p>PS: Ich habe euren &quot;Feldzug&quot; gegen die Ungarische Notation mitverfolgt und finde das ehrlich gesagt etwas überzogen. Ich benutze Teile der UN weil sie mir hilft (c=Counter, f=Flag usw.) und nicht weil ich sie schön/cool/individuell oder sowas finde. In diesem Beispiel habe ich nichtmal reine UN verwendet sondern nur eine Markierung p für Parameter (im Gegensatz zu m für Member).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1115952</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1115952</guid><dc:creator><![CDATA[MarcoAtWork]]></dc:creator><pubDate>Sat, 12 Aug 2006 11:58:20 GMT</pubDate></item><item><title><![CDATA[Reply to Performance von switch on Sat, 12 Aug 2006 12:49:44 GMT]]></title><description><![CDATA[<p>MarcoAtWork schrieb:</p>
<blockquote>
<p>PS: Ich habe euren &quot;Feldzug&quot; gegen die Ungarische Notation mitverfolgt und finde das ehrlich gesagt etwas überzogen. Ich benutze Teile der UN weil sie mir hilft (c=Counter, f=Flag usw.) und nicht weil ich sie schön/cool/individuell oder sowas finde. In diesem Beispiel habe ich nichtmal reine UN verwendet sondern nur eine Markierung p für Parameter (im Gegensatz zu m für Member).</p>
</blockquote>
<p>...das mit der UN wurde schon x Mal diskutiert. Wenn Du alleine codest, machs wies Dir gefällt, im Team sind Konventionen nützlich.<br />
Was ich eher..naja..sagen wir mal..affig finde, ist die Verknüpfung von Wörtern mit Grossbuchstaben, wie zB <strong>S</strong>ide<strong>W</strong>inder...</p>
<p>btw: was hast Du denn für Arbeitszeiten <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1115975</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1115975</guid><dc:creator><![CDATA[THX 1138]]></dc:creator><pubDate>Sat, 12 Aug 2006 12:49:44 GMT</pubDate></item><item><title><![CDATA[Reply to Performance von switch on Sat, 12 Aug 2006 12:58:42 GMT]]></title><description><![CDATA[<p>Frag lieber nicht. Unser sog. &quot;Projektmanager&quot; (den ich im übrigen für komplett unfähig halte) hat sich etwas verschätzt, was zur folge hat, dass die Arbeitszeit jetzt nurnoch durch Kaffeekochen und kurze Schlafphase unterbrochen werden.<br />
Ich sag euch, traut nie einem Wirtschaftler, der euch sagen will wann was fertig zu sein hat. (Einer meiner Professoren sagte damals: &quot;Solche Leute sind bei Programmierern sehr beliebt und machen hin und wieder auch mal Bekannstschaft mit einem uns wohlbekannten Sportgerät&quot; ermeinte einen Baseballschläger...)</p>
<p>naja...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1115979</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1115979</guid><dc:creator><![CDATA[MarcoAtWork]]></dc:creator><pubDate>Sat, 12 Aug 2006 12:58:42 GMT</pubDate></item><item><title><![CDATA[Reply to Performance von switch on Sat, 12 Aug 2006 13:03:47 GMT]]></title><description><![CDATA[<p>&quot;Projektmanagement&quot; <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /><br />
&quot;Deadline&quot; <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /></p>
<p>Mein Beileid.<br />
Aber lass Dir wenigstens die Überstunden ordentlich vergolden beim nächsten &quot;Qualifikationsgespräch&quot; ( Bingo ) sprich Lohnverhandlung</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1115983</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1115983</guid><dc:creator><![CDATA[THX 1138]]></dc:creator><pubDate>Sat, 12 Aug 2006 13:03:47 GMT</pubDate></item><item><title><![CDATA[Reply to Performance von switch on Sat, 12 Aug 2006 13:08:35 GMT]]></title><description><![CDATA[<p>@1310-Logik<br />
Wörter die über Großbuchstaben verbunden sind (lies Camel-Notation) sind für den Mensch leichter erfassbar bzw. zu lesen, als Wörter die mit Underscores verbunden sind. Der Unterschied hier ist nicht sehr groß, bevor hier jetzt einer behauptet er hätte keine Probleme sowas zu lesen. Aber er ist da.</p>
<p>Ein gewaltiger Unterschied ist es aber, wenn Wörter komplett in Großbuchstaben geschrieben sind (Die Microsoft-Leute machen das ja fürs Leben gern), dann ist es sehr schwer die einzelne Wörter rauszulesen und es erfordert sehr viel mehr Konzentration, als bei den anderen beiden Varianten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1115987</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1115987</guid><dc:creator><![CDATA[Lolz]]></dc:creator><pubDate>Sat, 12 Aug 2006 13:08:35 GMT</pubDate></item><item><title><![CDATA[Reply to Performance von switch on Sat, 12 Aug 2006 13:16:47 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">JederSollteSelbstEntscheidenWasErBesserLesenKannUndDasDannAuchSoAnwenden
</code></pre>
<pre><code class="language-cpp">jeder_sollte_selbst_entscheiden_was_er_besser_lesen_kann_und_das_dann_auch_so_anwenden
</code></pre>
<p>Ich mach übrigens beides: Für Klassen, Typenames/defs, Structs, also alles was einem Typ irgendwie ähnelt, schreib ich erste Version.<br />
Instanzierungen, Variablen etc schreib ich nach zweiter Art.<br />
Dann kann ich das schön trennen.</p>
<pre><code class="language-cpp">MeineTolleKlasse eine_tolle_klasse = 0;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1115995</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1115995</guid><dc:creator><![CDATA[THX 1138]]></dc:creator><pubDate>Sat, 12 Aug 2006 13:16:47 GMT</pubDate></item><item><title><![CDATA[Reply to Performance von switch on Sat, 12 Aug 2006 13:24:09 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">jdeer sltole sebslt ehnteidscen was er bseesr leesn knan und das dnan acuh so aeenwdnn
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1116002</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1116002</guid><dc:creator><![CDATA[Obfuscat0r]]></dc:creator><pubDate>Sat, 12 Aug 2006 13:24:09 GMT</pubDate></item><item><title><![CDATA[Reply to Performance von switch on Sun, 13 Aug 2006 08:05:58 GMT]]></title><description><![CDATA[<blockquote>
<p>PS: Ich habe euren &quot;Feldzug&quot; gegen die Ungarische Notation mitverfolgt und finde das ehrlich gesagt etwas überzogen. Ich benutze Teile der UN weil sie mir hilft (c=Counter, f=Flag usw.) und nicht weil ich sie schön/cool/individuell oder sowas finde. In diesem Beispiel habe ich nichtmal reine UN verwendet sondern nur eine Markierung p für Parameter (im Gegensatz zu m für Member).</p>
</blockquote>
<p>das is ja auch die richtige nutzung der UN gegen die wohl niemand etwas hat. Es geht hier eher um sowas wie iFlag(i=int). Also typinformationen die nie jemand braucht. Was die UN ursprünglich machen wollte, war informationen über den verwendungszweck zu vermitteln, und das ist ok.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1116339</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1116339</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Sun, 13 Aug 2006 08:05:58 GMT</pubDate></item><item><title><![CDATA[Reply to Performance von switch on Sun, 13 Aug 2006 08:58:35 GMT]]></title><description><![CDATA[<p>otze schrieb:</p>
<blockquote>
<p>das is ja auch die richtige nutzung der UN gegen die wohl niemand etwas hat.</p>
</blockquote>
<p>naja, ist auch unfug. kräftig ist sie zum beispiel bei koordinaten kann man horizontale werte mit h und vertikale werte mit v kennzeichnen und wenn da dann steht ha=hk+hp*(hx-hy)/(vm-vb), dann sieht man auf den ersten blick, daß die typengeschichichte stimmt. differenzen und summen haben gleichtypige summanden und so.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1116360</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1116360</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 13 Aug 2006 08:58:35 GMT</pubDate></item></channel></rss>