<?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[typeid() ... schlechter Stil?]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich programmiere gerade ein Spiel und schreibe zurzeit eine kleine Konsole für eben jenes. Diese Konsole enthält viele Variablen, im Folgenden &quot;CVar&quot;'s genannt..</p>
<p>Mein Code bis jetzt:</p>
<pre><code>#include &quot;cvar.h&quot;

int main()
{
	CVarSys sys;

	sys.AddCvar&lt;float&gt;( &quot;float_asd&quot;, 1.0f );
	sys.AddCvar&lt;bool&gt;( &quot;bool_test&quot;, true );
	sys.AddCvar&lt;int&gt;( &quot;int_someint&quot;, 12 );

	std::cout &lt;&lt; sys.GetCvarValue&lt;float&gt;( &quot;float_asd&quot; ) &lt;&lt; std::endl;
	std::cout &lt;&lt; sys.GetCvarValue&lt;bool&gt;( &quot;bool_menc9regay&quot; ) &lt;&lt; std::endl;
	std::cout &lt;&lt; sys.GetCvarValue&lt;int&gt;( &quot;int_someint&quot; ) &lt;&lt; endl;

	std::cin.get();
	return 1;
}
</code></pre>
<pre><code>#include &lt;boost/any.hpp&gt;

class CVar
{
public:
	std::string name;
	boost::any var;
};

class CVarSys
{
public:
	std::vector&lt;CVar*&gt; cvarVec;

	template&lt; class T &gt; void AddCvar( std::string name, T var )
	{
		CVar *cvar = new CVar;
		cvar-&gt;name = name;
		cvar-&gt;var = var;

		cvarVec.push_back( cvar );
	}

	template&lt; class T &gt; T GetCvarValue( std::string name )
	{
		for( std::vector&lt;CVar*&gt;::iterator it = cvarVec.begin(); it != cvarVec.end(); it++ )
		{
			if( (*it)-&gt;name == name )
			{
				if( (*it)-&gt;var.type().name() == typeid( T ).name() )
					return boost::any_cast&lt;T&gt;( (*it)-&gt;var );
				else
				{
					std::cout &lt;&lt; &quot;You want the type &quot; &lt;&lt; typeid( T ).name() &lt;&lt; &quot; returned but object is &quot; &lt;&lt; (*it)-&gt;var.type().name() &lt;&lt; std::endl;
				}
			}
		}

		return 0;
	}

	std::string GetTypeOf( std::string name )
	{
		for( std::vector&lt;CVar*&gt;::iterator it = cvarVec.begin(); it != cvarVec.end(); it++ )
		{
			if( (*it)-&gt;name == name )
				return (*it)-&gt;var.type().name();
		}

		return &quot;ERROR&quot;;
	}
};
</code></pre>
<p>Nun hab ich aber irgendwas gelesen von wegen boost::any und das benutzen von typeid() etc würde auf schlechten Programmierstil hinweisen und dass ich mein Konzept nochmal überdenken sollte.. aber wie würdet ihr sowas schreiben.. Ich suche nur ein paar Anreize für neue Konzepte (;</p>
<p>Oder würdet ihr es einfach so lassen wie ich es jetzt hab?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/277167/typeid-schlechter-stil</link><generator>RSS for Node</generator><lastBuildDate>Tue, 25 Aug 2026 22:47:05 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/277167.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 14 Nov 2010 10:59:59 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to typeid() ... schlechter Stil? on Sun, 14 Nov 2010 10:59:59 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich programmiere gerade ein Spiel und schreibe zurzeit eine kleine Konsole für eben jenes. Diese Konsole enthält viele Variablen, im Folgenden &quot;CVar&quot;'s genannt..</p>
<p>Mein Code bis jetzt:</p>
<pre><code>#include &quot;cvar.h&quot;

int main()
{
	CVarSys sys;

	sys.AddCvar&lt;float&gt;( &quot;float_asd&quot;, 1.0f );
	sys.AddCvar&lt;bool&gt;( &quot;bool_test&quot;, true );
	sys.AddCvar&lt;int&gt;( &quot;int_someint&quot;, 12 );

	std::cout &lt;&lt; sys.GetCvarValue&lt;float&gt;( &quot;float_asd&quot; ) &lt;&lt; std::endl;
	std::cout &lt;&lt; sys.GetCvarValue&lt;bool&gt;( &quot;bool_menc9regay&quot; ) &lt;&lt; std::endl;
	std::cout &lt;&lt; sys.GetCvarValue&lt;int&gt;( &quot;int_someint&quot; ) &lt;&lt; endl;

	std::cin.get();
	return 1;
}
</code></pre>
<pre><code>#include &lt;boost/any.hpp&gt;

class CVar
{
public:
	std::string name;
	boost::any var;
};

class CVarSys
{
public:
	std::vector&lt;CVar*&gt; cvarVec;

	template&lt; class T &gt; void AddCvar( std::string name, T var )
	{
		CVar *cvar = new CVar;
		cvar-&gt;name = name;
		cvar-&gt;var = var;

		cvarVec.push_back( cvar );
	}

	template&lt; class T &gt; T GetCvarValue( std::string name )
	{
		for( std::vector&lt;CVar*&gt;::iterator it = cvarVec.begin(); it != cvarVec.end(); it++ )
		{
			if( (*it)-&gt;name == name )
			{
				if( (*it)-&gt;var.type().name() == typeid( T ).name() )
					return boost::any_cast&lt;T&gt;( (*it)-&gt;var );
				else
				{
					std::cout &lt;&lt; &quot;You want the type &quot; &lt;&lt; typeid( T ).name() &lt;&lt; &quot; returned but object is &quot; &lt;&lt; (*it)-&gt;var.type().name() &lt;&lt; std::endl;
				}
			}
		}

		return 0;
	}

	std::string GetTypeOf( std::string name )
	{
		for( std::vector&lt;CVar*&gt;::iterator it = cvarVec.begin(); it != cvarVec.end(); it++ )
		{
			if( (*it)-&gt;name == name )
				return (*it)-&gt;var.type().name();
		}

		return &quot;ERROR&quot;;
	}
};
</code></pre>
<p>Nun hab ich aber irgendwas gelesen von wegen boost::any und das benutzen von typeid() etc würde auf schlechten Programmierstil hinweisen und dass ich mein Konzept nochmal überdenken sollte.. aber wie würdet ihr sowas schreiben.. Ich suche nur ein paar Anreize für neue Konzepte (;</p>
<p>Oder würdet ihr es einfach so lassen wie ich es jetzt hab?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1980219</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1980219</guid><dc:creator><![CDATA[Neuling__3]]></dc:creator><pubDate>Sun, 14 Nov 2010 10:59:59 GMT</pubDate></item><item><title><![CDATA[Reply to typeid() ... schlechter Stil? on Sun, 14 Nov 2010 15:03:52 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>Wäre typeid bzw. RTTI generell &quot;schlecht&quot;, wäre es wohl nicht im C++ Standard drinnen <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>
<p>Immer dann, wenn man zwingend einen Container (hier vector) mit mehr als nur einem Typ von Variablen füllen möchte braucht man eben eine Klasse, die alle Typen verwalten kann und die jedem Typ eine eindeutige ID zuweist. Die Frage wäre dann eher: Kannst du das Programm auch ohne einen solchen Container umsetzen?</p>
<p>Dein Beispiel erinnert mich etwas an Konfigurations-Interfaces (konkret COM, VARIANT, OleDB). Während sich die Steuerung einer Komponente oft durch ein Interface gut abstrahieren läßt, ist dies bei speziellen Einstellung, die implementierungsspezifisch sind, allgemein <em>nicht</em> so einfach lösbar.... und dann braucht man eben irgend eine Art von &quot;Property&quot; Klasse, die einen string-Namen mit einen beliebigen Werte-Typ verknüpft.</p>
<p>Solche Lösungen findest du also auch in anderen Bibliotheken (und bei COM unter Windows ist das fast <em>immer</em> so gelöst ... auch das dotNet framework benutzt dann gerne den Typ &quot;object&quot;, welcher dann umgecastet werden muss).</p>
<p>Natürlich kann man jetzt aber darüber streiten wie &quot;stabil&quot; die typeid Namen sind. Unterschiedliche Compiler nutzen ev. unterschiedliche Namen für typeids ... und wenn du einen Code auf mehrere Bibliotheken verteilst, sollte man zumindest überprüfen, ob typeid die richtige Wahl ist.<br />
Ich hab mir dafür ein paar eigene templates gebaut, die jedem unterstützten Typ eine interne ID zuweisen und dann eben diese ID für den Vergleich und nicht den typeid-Namen benutzen ... und das klappt ganz gut <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>
<p>cu xor</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1980326</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1980326</guid><dc:creator><![CDATA[xor]]></dc:creator><pubDate>Sun, 14 Nov 2010 15:03:52 GMT</pubDate></item><item><title><![CDATA[Reply to typeid() ... schlechter Stil? on Sun, 14 Nov 2010 15:08:11 GMT]]></title><description><![CDATA[<p>Die Frage ist also, ob Du mit if/if/if/if/if/.../if oder mit virtual dispatchen willst.</p>
<blockquote>
<p>Wäre typeid bzw. RTTI generell &quot;schlecht&quot;, wäre es wohl nicht im C++ Standard drinnen</p>
</blockquote>
<p>Ungutes Argument. Hätte Gott gewollt, daß der Mensch fliegt, hätte er ihm Flügel wachsen lassen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1980331</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1980331</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 14 Nov 2010 15:08:11 GMT</pubDate></item><item><title><![CDATA[Reply to typeid() ... schlechter Stil? on Sun, 14 Nov 2010 15:43:40 GMT]]></title><description><![CDATA[<p>Wurde es nicht mal angesprochen, dass das Weglassen bestimmter Features in einer Sprache mehr Kritik (und schlechtere Workarounds) mit sich bringt als deren Implementierung und Aufnahme in den Standard?</p>
<p>Leider kommen da oft so pauschale Aussage wie &quot;XYZ ist schlecht&quot;, und dem kann ich einfach nicht zustimmen. Auch typeid hat somit seine Existenzberechtung.</p>
<p>Das heißt aber natürlich nicht, dass man es an allen Stellen hirnlos einsetzen soll ... im Gegenteil.</p>
<p>Ist doch vergleichbar mit &quot;Exceptions sind sinnlos&quot; oder &quot;dynamic_cast gehört verboten&quot;. Das muss man doch alles im Detail betrachten und entscheiden.</p>
<p>PS:<br />
Ich persönlich finde im Code [return 0] und [return &quot;ERROR&quot;] schlechter als den Einsatz von typeid ... da gehört ein throw hin - aber ist nur meine Meinung :p</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1980347</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1980347</guid><dc:creator><![CDATA[xor]]></dc:creator><pubDate>Sun, 14 Nov 2010 15:43:40 GMT</pubDate></item><item><title><![CDATA[Reply to typeid() ... schlechter Stil? on Sun, 14 Nov 2010 16:04:51 GMT]]></title><description><![CDATA[<p>Es gibt einige Features im Standard, die nur in Ausnahmefällen eine gute Idee sind. RTTI ist eines davon, goto und mutable zwei weitere. Es ist wichtig zu verstehen, dass ein Standard zu einem guten Teil deskriptiv ist, d.h., dass das festgeschrieben wird, was gängige Implementationen schon machen. Das, was gängige Implementationen vor einer Standardisierung machen, ist nicht immer eine gute Idee.</p>
<p>RTTI im speziellen ist ein Nebenprodukt bestimmer Implementationen des Exception-Handlings. Wenn man es eh schon hat, hat man sich wohl gedacht, kann man es für andere Dinge zur Verfügung stellen, vielleicht kann's ja mal jemand brauchen. Dass man, wenn man es braucht, im Zweifel ein sehr unsauberes und auf jeden Fall kein objektorientiertes Design hat, steht auf einem anderen Blatt, und ich hätte es eigentlich auch nicht für sinnvoll gehalten, hätte das Standardisierungskomitee sich in die Designpraktiken der Programmierer (ob dreckig oder nicht) eingemischt. Metaprogrammierung wäre dann wohl nie entdeckt worden.</p>
<p>Was den konkreten Fall angeht, spricht etwas dagegen, für verschiedene Typen verschiedene Container zu benutzen? Statt</p>
<pre><code class="language-cpp">CVarSys sys;

sys.GetCvarValue&lt;int&gt;(&quot;foo&quot;);
</code></pre>
<p>beispielsweise</p>
<pre><code class="language-cpp">CVarSys&lt;int&gt; sys_int;

sys_int.GetCvarValue(&quot;foo&quot;);
</code></pre>
<p>Es hängt allerdings ein bisschen davon ab, an welcher Stelle du weißt, welche Datentypen du letztendlich benötigen wirst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1980358</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1980358</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Sun, 14 Nov 2010 16:04:51 GMT</pubDate></item><item><title><![CDATA[Reply to typeid() ... schlechter Stil? on Mon, 15 Nov 2010 04:45:30 GMT]]></title><description><![CDATA[<p>Was haltet ihr denn davon:</p>
<pre><code>class Event {
  [...]
  virtual bool isInvalidatingOtherEventsOfSameType() const throw() = 0;
}
</code></pre>
<p>Dann gibt es ganz viele spezifische Events, die das als Basisklasse erben. Die Userklasse hat jetzt ne Methode addEvent, die folgendes macht (das auto ist ein c++0x feature, dann spart man sich die manuelle Typisierung):</p>
<pre><code>if(event-&gt;isInvalidatingOtherEventsOfSameType())
{
  auto &amp;addedType = typeid((*event));
  auto it = events_.begin();
  while(it != events_.end())
  {
    if(addedType == typeid((*(*it))))
    {
      it = events_.erase(it);
    }
    else
    {
      it++;
    }
  }
}
</code></pre>
<p>Es geht darum, dass manche Events mehrfach vorkommen dürfen und manche Events die vorherigen Events ungültig machen.</p>
<p>Ein Beispiel für ein solches Event wäre die Bewegung eines Users zu einer Zielkoordinate, denn sobald er sich auf eine neue Koordinate bewegt ist das alte Event mit der alten Zielkoordinate natürlich ungültig.</p>
<p>Ich persönlich bin der Meinung in meinem Usecase ist RTTI die perfekte Lösung für das Problem, oder seht ihr das anders?</p>
<p>mfg, René~</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1980561</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1980561</guid><dc:creator><![CDATA[NewSoftzzz]]></dc:creator><pubDate>Mon, 15 Nov 2010 04:45:30 GMT</pubDate></item><item><title><![CDATA[Reply to typeid() ... schlechter Stil? on Tue, 16 Nov 2010 18:19:05 GMT]]></title><description><![CDATA[<p>Da keiner widerspricht, gehe ich davon aus, dass mein Usecase eine perfekte Verwendung von typeid darstellt. @OP, du siehst also, typeid ist nicht immer schlechter Stil. Wenn man allerdings nach typeid branched (switch / if..else) dann ist es wahrscheinlich anders besser lösbar.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1981344</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1981344</guid><dc:creator><![CDATA[NewSoftzzz]]></dc:creator><pubDate>Tue, 16 Nov 2010 18:19:05 GMT</pubDate></item><item><title><![CDATA[Reply to typeid() ... schlechter Stil? on Tue, 16 Nov 2010 20:23:22 GMT]]></title><description><![CDATA[<p>NewSoftzzz schrieb:</p>
<blockquote>
<p>Da keiner widerspricht, gehe ich davon aus, dass mein Usecase eine perfekte Verwendung von typeid darstellt.</p>
</blockquote>
<p>Nein. Ich wollte mir bloß die Mühe nicht machen.<br />
Statt</p>
<pre><code class="language-cpp">if(event-&gt;isInvalidatingOtherEventsOfSameType())
{
  auto &amp;addedType = typeid((*event));
  auto it = events_.begin();
  while(it != events_.end())
  {
    if(addedType == typeid((*(*it))))
    {
      it = events_.erase(it);
    }
    else
    {
      it++;
    }
  }
}
</code></pre>
<p>denke ich an</p>
<pre><code class="language-cpp">if(event-&gt;isInvalidatingOtherEventsOfSameType())
{
  unique_events[event-&gt;getEventClassID()]=event;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1981412</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1981412</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Tue, 16 Nov 2010 20:23:22 GMT</pubDate></item><item><title><![CDATA[Reply to typeid() ... schlechter Stil? on Tue, 16 Nov 2010 20:28:00 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<pre><code class="language-cpp">if(event-&gt;isInvalidatingOtherEventsOfSameType())
{
  unique_events[event-&gt;getEventClassID()]=event;
}
</code></pre>
</blockquote>
<ol>
<li>Die Events haben keine Id, da unnötiger RAM Verbrauch</li>
<li>Die Events sind in einer std::list, da eine std::map unnötigen RAM Verbrauch bedeutet und ich außer beim hinzufügen von unique Events immer linear über alle Events iterieren muss.</li>
<li>Welche Nachteile birgt meine typeid Lösung?</li>
</ol>
<p>PS: Ist eventClassId hier eine static methode die eine ID der Klasse darstellt? Wo ist da der Unterschied zu typeid? O_o</p>
<p>mfg, René~</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1981417</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1981417</guid><dc:creator><![CDATA[NewSoftzzz]]></dc:creator><pubDate>Tue, 16 Nov 2010 20:28:00 GMT</pubDate></item><item><title><![CDATA[Reply to typeid() ... schlechter Stil? on Tue, 16 Nov 2010 20:36:45 GMT]]></title><description><![CDATA[<p>NewSoftzzz schrieb:</p>
<blockquote>
<ol>
<li>Die Events haben keine Id, da unnötiger RAM Verbrauch</li>
</ol>
</blockquote>
<p>Ich rede von Klassen-IDs. Auch kein RAM-Verbrauch.</p>
<p>NewSoftzzz schrieb:</p>
<blockquote>
<ol start="2">
<li>Die Events sind in einer std::list, da eine std::map unnötigen RAM Verbrauch bedeutet und ich außer beim hinzufügen von unique Events immer linear über alle Events iterieren muss.</li>
</ol>
</blockquote>
<p>Ich rede von einem Array. Daher viel weniger RAM-Verbrauch als std::list und auch viel schneller.</p>
<p>NewSoftzzz schrieb:</p>
<blockquote>
<ol start="3">
<li>Welche Nachteile birgt meine typeid Lösung?</li>
</ol>
</blockquote>
<p>Weiß nicht. Ich finde sie nicht naheliegend. Du sagst es gibt events, die ihre Verwandten automatisch töten. Ich will eher sowas wie es gibt events, die nur einmal vorkommen können.</p>
<p>NewSoftzzz schrieb:</p>
<blockquote>
<p>PS: Ist eventClassId hier eine static methode die eine ID der Klasse darstellt? Wo ist da der Unterschied zu typeid? O_o</p>
</blockquote>
<p>Vielleicht kein großer. Aber wenn man schonmal so weit ist, kann man das Array auch auffächern in pro Eventklasse einen static pointer auf das unique event.<br />
Ich nehme an, da geht noch einiges.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1981421</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1981421</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Tue, 16 Nov 2010 20:36:45 GMT</pubDate></item><item><title><![CDATA[Reply to typeid() ... schlechter Stil? on Tue, 16 Nov 2010 20:39:22 GMT]]></title><description><![CDATA[<p>Ach so, jetzt versteh ich das. Findest du es wirklich sinnvoll, wenn alle Algorithmen linear über die Events iterieren, die dann in mehrere Container zu verteilen? Dadurch würden die Algorithmen unnötig komplizierter.</p>
<p>Desweiteren ist die Reihenfolge in der Liste äquivalent zur chronologischen Entstehung der Events, das würde durch deine Aufsplittung auch verloren gehen.</p>
<p>Die Sache mit den unique Events ist eher ein Schutzmaßnahme falls die Events noch nicht vom Client abgeholt wurden und stellt keinen Regelfall dar.</p>
<p>mfg, René~</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1981424</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1981424</guid><dc:creator><![CDATA[NewSoftzzz]]></dc:creator><pubDate>Tue, 16 Nov 2010 20:39:22 GMT</pubDate></item><item><title><![CDATA[Reply to typeid() ... schlechter Stil? on Tue, 16 Nov 2010 20:45:48 GMT]]></title><description><![CDATA[<p>NewSoftzzz schrieb:</p>
<blockquote>
<p>Ach so, jetzt versteh ich das. Findest du es wirklich sinnvoll, wenn alle Algorithmen linear über die Events iterieren, die dann in mehrere Container zu verteilen? Dadurch würden die Algorithmen unnötig komplizierter.</p>
</blockquote>
<p>Das eine schließt das andere nicht aus. Alle events liegen in einer (chronologischen?) Liste. Und trotzdem wird pro Eventklasse, von denen es nur eins geben kann, der unique pointer (vielleicht als list::iterator) gehalten.</p>
<p>Uups, ich denke hier gleich an einen intrusiven doppelt verketten Ring denke, und normale Zeiger.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1981430</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1981430</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Tue, 16 Nov 2010 20:45:48 GMT</pubDate></item><item><title><![CDATA[Reply to typeid() ... schlechter Stil? on Tue, 16 Nov 2010 20:56:30 GMT]]></title><description><![CDATA[<p>Mal ne Frage zwischendurch: Warum sollte man ne Liste der gefangenen Events, die noch nicht veraltet sind, speichern wollen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1981438</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1981438</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Tue, 16 Nov 2010 20:56:30 GMT</pubDate></item><item><title><![CDATA[Reply to typeid() ... schlechter Stil? on Tue, 16 Nov 2010 21:00:56 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/106">@Volkard</a>: Nun ja, dein Array wäre auch schon RAM Verbrauch, da zu jedem Zeitpunkt ca. 98% der User gar keine Events haben. Wenn jetzt jeder von denen so ein Array mit allen möglichen unique Events mitschleppen müsste...</p>
<p>Michael E. schrieb:</p>
<blockquote>
<p>Mal ne Frage zwischendurch: Warum sollte man ne Liste der gefangenen Events, die noch nicht veraltet sind, speichern wollen?</p>
</blockquote>
<p>Das sind Ajax Events, die natürlich solange gespeichert werden bis der Client sie abholt oder sie eben ablaufen.</p>
<p>mfg, René~</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1981443</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1981443</guid><dc:creator><![CDATA[NewSoftzzz]]></dc:creator><pubDate>Tue, 16 Nov 2010 21:00:56 GMT</pubDate></item><item><title><![CDATA[Reply to typeid() ... schlechter Stil? on Tue, 16 Nov 2010 21:25:24 GMT]]></title><description><![CDATA[<p>NewSoftzzz schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/106">@Volkard</a>: Nun ja, dein Array wäre auch schon RAM Verbrauch, da zu jedem Zeitpunkt ca. 98% der User gar keine Events haben. Wenn jetzt jeder von denen so ein Array mit allen möglichen unique Events mitschleppen müsste...</p>
</blockquote>
<p>An wieviele unique-Typen denkst Du denn?<br />
Ein Server für viele Ajax-Clients also, der soo viele Clients hat, daß der Speicher ausgeht. Ist deine allocation granularity eigentlich 32 Byte? Sind das schon so viel wie ein Array mit 8 Zeigern?<br />
Die Schleife fühlt sich für mich einfach nicht gut an. Da bin ich verbohrt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1981455</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1981455</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Tue, 16 Nov 2010 21:25:24 GMT</pubDate></item><item><title><![CDATA[Reply to typeid() ... schlechter Stil? on Tue, 16 Nov 2010 21:28:34 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>An wieviele unique-Typen denkst Du denn?</p>
</blockquote>
<p>Keine Ahnung, aber es werden immer mehr.</p>
<p>volkard schrieb:</p>
<blockquote>
<p>Ein Server für viele Ajax-Clients also, der soo viele Clients hat, daß der Speicher ausgeht.</p>
</blockquote>
<p>Ich rechne immer mit 10 millionen. Im Moment lad ich alle in den RAM ob off- oder online. Das werd ich aber eventuell irgendwann noch ändern müssen <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>
<p>volkard schrieb:</p>
<blockquote>
<p>Ist deine allocation granularity eigentlich 32 Byte? Sind das schon so viel wie ein Array mit 8 Zeigern?</p>
</blockquote>
<p>Ein Zeiger hat 8 byte (64 bit).</p>
<p>@Schleife: Im Regelfall liegen in der Liste 0-3 Events.</p>
<p>mfg, René~</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1981457</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1981457</guid><dc:creator><![CDATA[NewSoftzzz]]></dc:creator><pubDate>Tue, 16 Nov 2010 21:28:34 GMT</pubDate></item><item><title><![CDATA[Reply to typeid() ... schlechter Stil? on Tue, 16 Nov 2010 21:33:05 GMT]]></title><description><![CDATA[<p>NewSoftzzz schrieb:</p>
<blockquote>
<p>Ich rechne immer mit 10 millionen. Im Moment lad ich alle in den RAM ob off- oder online. Das werd ich aber eventuell irgendwann noch ändern müssen <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>
</blockquote>
<p>Die offliners brauchen auch eine Event-Liste?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1981462</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1981462</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Tue, 16 Nov 2010 21:33:05 GMT</pubDate></item><item><title><![CDATA[Reply to typeid() ... schlechter Stil? on Tue, 16 Nov 2010 21:34:42 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>Die offliners brauchen auch eine Event-Liste?</p>
</blockquote>
<p>Korrektur: Ja, weil Events auftreten können und abgeholt werden können beim relogin.</p>
<p>mfg, René~</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1981464</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1981464</guid><dc:creator><![CDATA[NewSoftzzz]]></dc:creator><pubDate>Tue, 16 Nov 2010 21:34:42 GMT</pubDate></item><item><title><![CDATA[Reply to typeid() ... schlechter Stil? on Tue, 16 Nov 2010 21:35:17 GMT]]></title><description><![CDATA[<p>Dem habe ich dann nichts mehr hinzuzufügen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1981465</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1981465</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Tue, 16 Nov 2010 21:35:17 GMT</pubDate></item><item><title><![CDATA[Reply to typeid() ... schlechter Stil? on Wed, 17 Nov 2010 14:20:25 GMT]]></title><description><![CDATA[<blockquote>
<p>typeid() ... schlechter Stil?</p>
</blockquote>
<p>Ja...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1981733</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1981733</guid><dc:creator><![CDATA[typeid() suckz]]></dc:creator><pubDate>Wed, 17 Nov 2010 14:20:25 GMT</pubDate></item></channel></rss>