<?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[Schnellster Weg, einen Wert auf bestimmte Bereiche zu prüfen]]></title><description><![CDATA[<p>Hey!</p>
<p>Wie prüft man einen Wert am schnellsten auf bestimmte Bereiche?<br />
Beispiel:</p>
<p>int i;<br />
i darf 1 - 9 sein<br />
i darf 14, 15 sein<br />
i darf 26 - 39 sein<br />
i darf 50, 51, 52, 53 sein</p>
<p>Wie am besten prüfen? Es muss schnell gehen, denn es ist ein bisschen zeitkritisch.<br />
Soll ich inline ASM verwenden? Kann aber kein ASM, über Code wär ich froh.<br />
Viele if-Abfragen und Vergleiche möchte ich halt sparen, könnten auch noch paar mehr Bereiche werden.</p>
<p>THX!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/224379/schnellster-weg-einen-wert-auf-bestimmte-bereiche-zu-prüfen</link><generator>RSS for Node</generator><lastBuildDate>Fri, 02 Oct 2026 15:05:35 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/224379.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 08 Oct 2008 19:27:12 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Schnellster Weg, einen Wert auf bestimmte Bereiche zu prüfen on Wed, 08 Oct 2008 19:27:12 GMT]]></title><description><![CDATA[<p>Hey!</p>
<p>Wie prüft man einen Wert am schnellsten auf bestimmte Bereiche?<br />
Beispiel:</p>
<p>int i;<br />
i darf 1 - 9 sein<br />
i darf 14, 15 sein<br />
i darf 26 - 39 sein<br />
i darf 50, 51, 52, 53 sein</p>
<p>Wie am besten prüfen? Es muss schnell gehen, denn es ist ein bisschen zeitkritisch.<br />
Soll ich inline ASM verwenden? Kann aber kein ASM, über Code wär ich froh.<br />
Viele if-Abfragen und Vergleiche möchte ich halt sparen, könnten auch noch paar mehr Bereiche werden.</p>
<p>THX!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1595847</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1595847</guid><dc:creator><![CDATA[Eilender]]></dc:creator><pubDate>Wed, 08 Oct 2008 19:27:12 GMT</pubDate></item><item><title><![CDATA[Reply to Schnellster Weg, einen Wert auf bestimmte Bereiche zu prüfen on Wed, 08 Oct 2008 19:43:07 GMT]]></title><description><![CDATA[<p>Gibt es denn auch &quot;i darf 50,52,55 sein&quot;? Ansonsten sind ja alle Beispiele von-bis-Vergleiche.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1595853</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1595853</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Wed, 08 Oct 2008 19:43:07 GMT</pubDate></item><item><title><![CDATA[Reply to Schnellster Weg, einen Wert auf bestimmte Bereiche zu prüfen on Wed, 08 Oct 2008 19:51:26 GMT]]></title><description><![CDATA[<p>Das war natürlich blöd erklärt von mir...<br />
Ja, es kann sein dass dazwischen Zahlen geprüft werden müssen, also nicht ausschließlich nur Bereiche...</p>
<p>int i;<br />
i darf 1 - 9 sein<br />
i darf 12, 19, 22 sein<br />
i darf 26 - 39 sein<br />
..</p>
<p>Sry und thx</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1595856</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1595856</guid><dc:creator><![CDATA[Eilender]]></dc:creator><pubDate>Wed, 08 Oct 2008 19:51:26 GMT</pubDate></item><item><title><![CDATA[Reply to Schnellster Weg, einen Wert auf bestimmte Bereiche zu prüfen on Wed, 08 Oct 2008 21:00:28 GMT]]></title><description><![CDATA[<p>Wenn dein Zahlenbereich relativ klein ist, kannst du ein bool-Array verwenden.<br />
Bei deinem Beispiel lohnt sich das evtl. aber noch gar nicht (im Vergleich zu ein paar geschachtelten if-Abfragen). Einfach testweise die Zeit messen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1595896</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1595896</guid><dc:creator><![CDATA[Nanyuki]]></dc:creator><pubDate>Wed, 08 Oct 2008 21:00:28 GMT</pubDate></item><item><title><![CDATA[Reply to Schnellster Weg, einen Wert auf bestimmte Bereiche zu prüfen on Wed, 08 Oct 2008 21:08:36 GMT]]></title><description><![CDATA[<p>Wäre nicht vielleicht eine switch- Anweisung optimal?</p>
<pre><code class="language-cpp">switch(i)
{
case 1:
case 2:
case 3:
case 4:
case 9:
case 12:
case 21:
case 27:
case 28:
case 29:
case 30:
case 31:
case 32:
	break;
default:
	// Ungültiger Wert
}
</code></pre>
<p>Sind zwar viele cases, aber ist das nicht schnell?<br />
Thx</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1595899</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1595899</guid><dc:creator><![CDATA[Eilender]]></dc:creator><pubDate>Wed, 08 Oct 2008 21:08:36 GMT</pubDate></item><item><title><![CDATA[Reply to Schnellster Weg, einen Wert auf bestimmte Bereiche zu prüfen on Thu, 09 Oct 2008 05:03:39 GMT]]></title><description><![CDATA[<p>Eilender schrieb:</p>
<blockquote>
<p>Wie am besten prüfen? Es muss schnell gehen, denn es ist ein bisschen zeitkritisch.</p>
</blockquote>
<p>Woher weißt du dass es genau die Stelle im Programm ist die so zeitkritisch ist? Hat dir dein profiler gesagt dass an der Stelle so viel zeit verloren geht? Oder ist das nur eine Vermutung?</p>
<p>Falls du noch nicht vom Profiler bestätigt bekommen hast dass dort der kritische Punkt ist, würde ich es so machen:</p>
<ol>
<li>&quot;Ganz normal&quot; implementieren, also wie üblich so, dass es gut lesbar und wartbar ist.</li>
<li>Schauen ob du wirklich Performanceprobleme im Programm hast</li>
<li>Falls ja, mit dem Profiler schauen, WO die Probleme wirklich liegen</li>
<li>erst danach die entsprechenden Stellen verbessern</li>
</ol>
<p>Das Vorgehen sollte man immer in der Reihenfolge machen, denn meist bringt es herzlich wenig, zu schätzen wo es Probleme gibt und da von vornherein versuchen den Code zu verschlimmbessern, Das heißt natürlich nicht dass man von vornherein erstmal schlechten Code schreibt oder sich keine Gedanken über Algorithmen machen sollte.<br />
Ich würds in etwa so regeln:</p>
<pre><code class="language-cpp">template &lt;typename T&gt; bool inInterval(T val, T min, T max)
{
  return (val &gt;= min) &amp;&amp; (val &lt;= max);
}

/*...*/

if ( inInterval(x,1,9) 
   or (x == 12) 
   or (x == 19) 
   or (x == 21) 
   or inInterval(x,26,39) )
{
  /*.....*/
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1595975</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1595975</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Thu, 09 Oct 2008 05:03:39 GMT</pubDate></item><item><title><![CDATA[Reply to Schnellster Weg, einen Wert auf bestimmte Bereiche zu prüfen on Thu, 09 Oct 2008 06:52:08 GMT]]></title><description><![CDATA[<p>std::map&lt;int,bool&gt; und rein mit den erlaubten Zahlen. Sollte schnell abzufragen zu sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1596001</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1596001</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Thu, 09 Oct 2008 06:52:08 GMT</pubDate></item><item><title><![CDATA[Reply to Schnellster Weg, einen Wert auf bestimmte Bereiche zu prüfen on Thu, 09 Oct 2008 07:22:29 GMT]]></title><description><![CDATA[<p>Fellhuhn schrieb:</p>
<blockquote>
<p>std::map&lt;int,bool&gt; und rein mit den erlaubten Zahlen. Sollte schnell abzufragen zu sein.</p>
</blockquote>
<p>nicht lieber std::set&lt;int&gt;?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1596019</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1596019</guid><dc:creator><![CDATA[newbfeind]]></dc:creator><pubDate>Thu, 09 Oct 2008 07:22:29 GMT</pubDate></item><item><title><![CDATA[Reply to Schnellster Weg, einen Wert auf bestimmte Bereiche zu prüfen on Thu, 09 Oct 2008 07:53:48 GMT]]></title><description><![CDATA[<p>newbfeind schrieb:</p>
<blockquote>
<p>Fellhuhn schrieb:</p>
<blockquote>
<p>std::map&lt;int,bool&gt; und rein mit den erlaubten Zahlen. Sollte schnell abzufragen zu sein.</p>
</blockquote>
<p>nicht lieber std::set&lt;int&gt;?</p>
</blockquote>
<p>Dann eher std::unordered_set. Und wie bereits gesagt wurde ein std::vector&lt;bool&gt; wenn es sich um eine begrenzte Zahlenmenge handelt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1596034</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1596034</guid><dc:creator><![CDATA[Ponto]]></dc:creator><pubDate>Thu, 09 Oct 2008 07:53:48 GMT</pubDate></item><item><title><![CDATA[Reply to Schnellster Weg, einen Wert auf bestimmte Bereiche zu prüfen on Thu, 09 Oct 2008 07:57:42 GMT]]></title><description><![CDATA[<p>Eine unbegrenzte Zahlenmenge wäre auch ein bissel schlecht. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1596036</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1596036</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Thu, 09 Oct 2008 07:57:42 GMT</pubDate></item><item><title><![CDATA[Reply to Schnellster Weg, einen Wert auf bestimmte Bereiche zu prüfen on Thu, 09 Oct 2008 17:35:33 GMT]]></title><description><![CDATA[<p>Es geht um einen serverseitigen AntiCheat, da ist jeder Buchstabe zeitkritisch <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="🙂"
    /><br />
Also muss ich wirklich alles optimieren.</p>
<p>Danke für die Antworten.<br />
MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1596494</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1596494</guid><dc:creator><![CDATA[Eilender]]></dc:creator><pubDate>Thu, 09 Oct 2008 17:35:33 GMT</pubDate></item><item><title><![CDATA[Reply to Schnellster Weg, einen Wert auf bestimmte Bereiche zu prüfen on Thu, 09 Oct 2008 21:06:39 GMT]]></title><description><![CDATA[<p>Eilender schrieb:</p>
<blockquote>
<p>Es geht um einen serverseitigen AntiCheat, da ist jeder Buchstabe zeitkritisch <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="🙂"
    /><br />
Also muss ich wirklich alles optimieren.</p>
<p>Danke für die Antworten.<br />
MfG</p>
</blockquote>
<p>lol...<br />
ein buchstabe ist zeitkritisch? Oo ok - wie du meinst ^^<br />
weiste überhaupt, was ein profiler ist? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1596594</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1596594</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Thu, 09 Oct 2008 21:06:39 GMT</pubDate></item><item><title><![CDATA[Reply to Schnellster Weg, einen Wert auf bestimmte Bereiche zu prüfen on Fri, 10 Oct 2008 02:11:26 GMT]]></title><description><![CDATA[<p>Nanyuki schrieb:</p>
<blockquote>
<p>Wenn dein Zahlenbereich relativ klein ist, kannst du ein bool-Array verwenden.</p>
</blockquote>
<p>Das finde ich auch eine gute Idee <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1596631</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1596631</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Fri, 10 Oct 2008 02:11:26 GMT</pubDate></item></channel></rss>