<?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 Crash mit globalen(statischen) Objekt]]></title><description><![CDATA[<p>Hallo ersteinmal:</p>
<p>Problembeschreibung:</p>
<p>Modul1:</p>
<p>SI_32 search(...)<br />
{<br />
//LOCALS<br />
....</p>
<p>VARIANTE_1: if(condition) {call eval(); return(0);}<br />
VARIANTE_2: if(condition) {v = eval() ; return(v);}<br />
VARIANTE_3: if(condition) {return(eval());}</p>
<p>//code<br />
....<br />
}</p>
<p>Modul2:<br />
SI_32 eval(...)<br />
{</p>
<p>VARIANTE_A: OBJ obj[1];<br />
VARIANTE_B: static OBJ obj[1];</p>
<p>//code<br />
....</p>
<p>return(obj-&gt;value);<br />
}</p>
<p>Variante_1 ist der gewünschte Performance-Fall.(leider nicht zu gebrauchen,<br />
da berechnte evaluierung nicht verwendet wird)</p>
<p>In Variante_2+3 und Variante_B, dass heisst sobald ich den Member-Wert in irgendeiner art zuweise, oder das objekt aus eval() statisch(global) ist<br />
-&gt; PERFORMANCE CRASH (Faktor 100)</p>
<p>Der Witz an der Sache ist,dass garantiert derselbe Code durchlaufen wird.</p>
<p>Hat jemand eine Idee woran das liegen kann,oder schonmal ähnliche Probleme gehabt?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/229697/performance-crash-mit-globalen-statischen-objekt</link><generator>RSS for Node</generator><lastBuildDate>Sun, 27 Sep 2026 17:26:31 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/229697.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 15 Dec 2008 12:54:09 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Performance Crash mit globalen(statischen) Objekt on Mon, 15 Dec 2008 12:54:09 GMT]]></title><description><![CDATA[<p>Hallo ersteinmal:</p>
<p>Problembeschreibung:</p>
<p>Modul1:</p>
<p>SI_32 search(...)<br />
{<br />
//LOCALS<br />
....</p>
<p>VARIANTE_1: if(condition) {call eval(); return(0);}<br />
VARIANTE_2: if(condition) {v = eval() ; return(v);}<br />
VARIANTE_3: if(condition) {return(eval());}</p>
<p>//code<br />
....<br />
}</p>
<p>Modul2:<br />
SI_32 eval(...)<br />
{</p>
<p>VARIANTE_A: OBJ obj[1];<br />
VARIANTE_B: static OBJ obj[1];</p>
<p>//code<br />
....</p>
<p>return(obj-&gt;value);<br />
}</p>
<p>Variante_1 ist der gewünschte Performance-Fall.(leider nicht zu gebrauchen,<br />
da berechnte evaluierung nicht verwendet wird)</p>
<p>In Variante_2+3 und Variante_B, dass heisst sobald ich den Member-Wert in irgendeiner art zuweise, oder das objekt aus eval() statisch(global) ist<br />
-&gt; PERFORMANCE CRASH (Faktor 100)</p>
<p>Der Witz an der Sache ist,dass garantiert derselbe Code durchlaufen wird.</p>
<p>Hat jemand eine Idee woran das liegen kann,oder schonmal ähnliche Probleme gehabt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1630754</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1630754</guid><dc:creator><![CDATA[Desperado]]></dc:creator><pubDate>Mon, 15 Dec 2008 12:54:09 GMT</pubDate></item><item><title><![CDATA[Reply to Performance Crash mit globalen(statischen) Objekt on Mon, 15 Dec 2008 13:22:07 GMT]]></title><description><![CDATA[<p>Rembrandt? Ägypten?<br />
Ich sehe nicht, wo das etwas mit Forumsthema zu tun hätte ... sieht wie von einem Bot ausgespuckt aus.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1630775</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1630775</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Mon, 15 Dec 2008 13:22:07 GMT</pubDate></item><item><title><![CDATA[Reply to Performance Crash mit globalen(statischen) Objekt on Mon, 15 Dec 2008 13:30:59 GMT]]></title><description><![CDATA[<p>Nun, es kann lediglich etwas mit Handling von C++ Objekten zu tun<br />
haben.<br />
Ich kann auch original code posten.</p>
<p>(1.bin ich neu,2. kann ich wohl nur hier richtig sein, 3. geht es freundlicher)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1630780</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1630780</guid><dc:creator><![CDATA[Desperado]]></dc:creator><pubDate>Mon, 15 Dec 2008 13:30:59 GMT</pubDate></item><item><title><![CDATA[Reply to Performance Crash mit globalen(statischen) Objekt on Mon, 15 Dec 2008 13:41:52 GMT]]></title><description><![CDATA[<p>Desperado schrieb:</p>
<blockquote>
<p>sobald ich den Member-Wert in irgendeiner art zuweise, oder das objekt aus eval() statisch(global) ist<br />
-&gt; PERFORMANCE CRASH (Faktor 100)</p>
</blockquote>
<p>Es sind leider zu wenig Infos, um mehr als raten zu können. Das Einzige was mir einfällt: Um was für ein Objekt handelt es sich denn, wird evtl durch den Kopierkonstruktor und/oder Zuweisungsoperator viel Zeit verschlungen?</p>
<p>&quot;return eval()&quot; müsste durch die RVO (Return-Value-Optimization) eigentlich auch performanter sein als &quot;v=eval(); return v;&quot;.</p>
<p>edit: Und eine statische Variable ist nicht gleich global <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="😉"
    /> Das Wort &quot;global&quot; bezeichnet eigentlich den Sichtbarkeitsbereich, eine statische Variable in einem Funktionskörper ist aber nur in dieser Funktion sichtbar.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1630784</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1630784</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Mon, 15 Dec 2008 13:41:52 GMT</pubDate></item><item><title><![CDATA[Reply to Performance Crash mit globalen(statischen) Objekt on Mon, 15 Dec 2008 13:53:57 GMT]]></title><description><![CDATA[<p>hm, wie kann ich code posten, ohne das die formatierung dahingeht?<br />
(sorry)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1630791</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1630791</guid><dc:creator><![CDATA[Desperado]]></dc:creator><pubDate>Mon, 15 Dec 2008 13:53:57 GMT</pubDate></item><item><title><![CDATA[Reply to Performance Crash mit globalen(statischen) Objekt on Mon, 15 Dec 2008 14:02:10 GMT]]></title><description><![CDATA[<p>Desperado schrieb:</p>
<blockquote>
<p>...3. geht es freundlicher)</p>
</blockquote>
<p><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="😉"
    /><br />
Das bestimmt - leider kommt es hier nicht selten vor, dass irgendwelche Bots und/oder Trolle Zeug reinposten; da kann es schonmal passieren, dass es den Falschen erwischt. Sorry.</p>
<p>Desperado schrieb:</p>
<blockquote>
<p>hm, wie kann ich code posten, ohne das die formatierung dahingeht?<br />
(sorry)</p>
</blockquote>
<p>Mit cpp-Flags. Entweder &quot;unten&quot; auf den &quot;C/C++&quot;-Button oder selbst entsprechend &quot;cpp&quot; und &quot;/cpp&quot; in eckige Klammern (statt &quot;) setzen.<br />
Aber bitte: Nicht 1000 Zeilen, sondern möglichst nur einen Ausschnitt relevanten Codes...</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1630794</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1630794</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Mon, 15 Dec 2008 14:02:10 GMT</pubDate></item><item><title><![CDATA[Reply to Performance Crash mit globalen(statischen) Objekt on Mon, 15 Dec 2008 14:06:51 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">//--------------------------------------

	struct COLLECTION
		{
		 //GENERAL
		 //--------------------------------------

		 BTB	btb[PIECETYPE];
		 UI_08	mat[PIECETYPE];

		 ATTACK_T  ctl[ID_64][COLOR];

		 //PAWNINFO
		 //--------------------------------------

		 BTB	psd[COLOR];	//passed pawns
		 BTB	iso[COLOR]; //isolated pawns

		 BTB	sof[COLOR]; //semiopen files
		 BTB	ofl;		//open files

		 UI_08	ils[COLOR]; //pawniles counter

		 void clr(void){static const COLLECTION c;*this=c;}

		};

	//--------------------------------------

	struct SCORE 
		{
		 //all features scored from white view

		 SI_32 material[COLOR];
		 SI_32 isolani[COLOR];
 		 SI_32 balance[COLOR];

		};

	//--------------------------------------
</code></pre>
<pre><code class="language-cpp">/*----------------------------------------------------------------------------*/

SI_32 eval(UI_16 tid,BOARD *brd)
	{
	 //LOCALS
	 //--------------------------------------

	 BTB tmp,ctl;
	 SQUARE sq64,dst;
	 PIECE  pce12;

	 SI_32 v = VBALANCE;

	 COLLECTION collect[MAXTHREADS];
	 SCORE		score[MAXTHREADS];

	 //COLLECTION *const p = &amp;collect[tid];

	 //SETTINGS
	 //--------------------------------------

	 collect[tid].clr();

	 score[tid].balance[WHITE]=
	 score[tid].balance[BLACK]= 0;

	 //LOOP WHITE PIECELIST
	 //--------------------------------------

	 tmp = brd-&gt;wpl;

	 while(tmp)
		{
		 sq64 = bsf64(tmp);

		 pce12 = toPCE12[brd-&gt;sq[toX88[sq64&rsqb;&rsqb;];

		 collect[tid].mat[pce12]++;

		 ctl = p_attack(brd,sq64);

		 while(ctl)
			{
			 dst = bsf64(ctl);

			 inc_attack(tid,collect,sq64,pce12,WHITE);

			 CLB64(ctl);
			}

		 CLB64(tmp);
		}

	 //LOOP BLACK PIECELIST
	 //--------------------------------------

	 tmp = brd-&gt;bpl;

	 while(tmp)
		{
		 sq64 = bsf64(tmp);

		 pce12 = toPCE12[brd-&gt;sq[toX88[sq64&rsqb;&rsqb;];

		 collect[tid].mat[pce12]++;

		 ctl = p_attack(brd,sq64);

		 while(ctl)
			{
			 dst = bsf64(ctl);

			 inc_attack(tid,collect,sq64,pce12,BLACK);

			 CLB64(ctl);
			}

		 CLB64(tmp);
		}

	 //PAWNSTRUCTURE ANALYSIS
	 //--------------------------------------

	 pawnstruct(tid,collect);

	 //SCORE COLLECTED DATA
	 //--------------------------------------

	 score_material(tid,collect,score);
	 score_isolani(tid,collect,score,brd);
	 score_passer(tid,collect,score,brd);

	 //printf(&quot;\n%d &quot;,score[tid].balance[brd-&gt;ctm]);

	 return(score[tid].balance[brd-&gt;ctm]);
	}

/*----------------------------------------------------------------------------*/
</code></pre>
<pre><code class="language-cpp">/*----------------------------------------------------------------------------*/

SI_32 search_full(UI_16 tid,BOARD *brd,SI_32 alpha,SI_32 beta,SI_16 rdp,UI_16 cdp)
	{
	 SI_32 vcur,vbst;
	 UI_16 mnb;
	 UNDO undo[1];
	 MLIST mli[1];

	 scontrol-&gt;nds++;

	 //INTERRUPT SEARCH
	 //--------------------------------------

	 if(INTERRUPT) go(scontrol);

	 //HORIZON
	 //--------------------------------------

	 if(rdp&lt;=0) {eval(tid,brd);return(0);}

	 //GENERATE (PSEUDOLEGAL) MOVES
	 //--------------------------------------

	 gen[brd-&gt;ctm](brd,mli);

	 //LOOP MOVELIST
	 //--------------------------------------

	 for(mnb=0;mnb&lt;mli-&gt;sze;mnb++)
		{
		 move_do(brd,undo,mli-&gt;mve[mnb]);

		 if(!incheck(brd,!brd-&gt;ctm))
			{
			 vcur = -search_full(tid,brd,-beta,-alpha,rdp-1,cdp+1);
			}

		 //update_best()

		 move_undo(brd,undo);
		}

	 return(vbst);
	}

/*----------------------------------------------------------------------------*/
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1630797</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1630797</guid><dc:creator><![CDATA[Desperado]]></dc:creator><pubDate>Mon, 15 Dec 2008 14:06:51 GMT</pubDate></item><item><title><![CDATA[Reply to Performance Crash mit globalen(statischen) Objekt on Mon, 15 Dec 2008 14:22:24 GMT]]></title><description><![CDATA[<p>Danke Simon2 (&quot;sorry&quot; angenommen), hoffe ich hab den Rahmen nicht gesprengt mit<br />
dem Source...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1630804</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1630804</guid><dc:creator><![CDATA[Desperado]]></dc:creator><pubDate>Mon, 15 Dec 2008 14:22:24 GMT</pubDate></item><item><title><![CDATA[Reply to Performance Crash mit globalen(statischen) Objekt on Mon, 15 Dec 2008 14:25:53 GMT]]></title><description><![CDATA[<p>Auch danke ersteinmal..., mir sind die Unterschiede zwischen statics/globals bekannt.<br />
Der Effekt ist für mein problem derselbe. deshalb schrieb ich static(global)...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1630806</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1630806</guid><dc:creator><![CDATA[Desperado]]></dc:creator><pubDate>Mon, 15 Dec 2008 14:25:53 GMT</pubDate></item></channel></rss>