<?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[Anfängerfrage zur Preformance]]></title><description><![CDATA[<p>Ich hab erst vor ein paar Wochen mit C angefangen und hoffe einfach mal dass die Frage nicht allzu lächerlich ist <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="😉"
    /> Also, ich wollte wissen wie man normalerweise die Geschwindigkeit von Programmteilen vergleicht. Ich hab es jetzt so gemacht, dass ich die Prozessorzeit vor dem Programmabschnitt nehme, dann die Zeit nach dem Abschnitt und die Differenz ist dann etwa die Zeit in ms die zum Ausführen dieses Programmteils benötigt wurde. Macht man das normalerweise anderst? Die Frage kommt halt auf wenn ich zwei Lösungen für ein Problem habe, dann würd ich so testen welche schneller ist. Die nächste Frage betrifft Kontrollstrukturen. Ich wollte testen wann zum Beispiel eine for-Schleife und wann eine while-Schleife schneller ist. Bei dem Test war dann die for-Schleife beim reinen zählen um etwa 10% schneller, und wenn noch andere Rechenoperationen dabei sind war die while-schleife um 60% schneller. Bedeutet das jetzt dass ich für alles (ausser das reine zählen) while-Schleifen verwenden sollte?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/159817/anfängerfrage-zur-preformance</link><generator>RSS for Node</generator><lastBuildDate>Thu, 10 Sep 2026 23:06:52 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/159817.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 19 Sep 2006 09:38:15 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Anfängerfrage zur Preformance on Tue, 19 Sep 2006 09:38:15 GMT]]></title><description><![CDATA[<p>Ich hab erst vor ein paar Wochen mit C angefangen und hoffe einfach mal dass die Frage nicht allzu lächerlich ist <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="😉"
    /> Also, ich wollte wissen wie man normalerweise die Geschwindigkeit von Programmteilen vergleicht. Ich hab es jetzt so gemacht, dass ich die Prozessorzeit vor dem Programmabschnitt nehme, dann die Zeit nach dem Abschnitt und die Differenz ist dann etwa die Zeit in ms die zum Ausführen dieses Programmteils benötigt wurde. Macht man das normalerweise anderst? Die Frage kommt halt auf wenn ich zwei Lösungen für ein Problem habe, dann würd ich so testen welche schneller ist. Die nächste Frage betrifft Kontrollstrukturen. Ich wollte testen wann zum Beispiel eine for-Schleife und wann eine while-Schleife schneller ist. Bei dem Test war dann die for-Schleife beim reinen zählen um etwa 10% schneller, und wenn noch andere Rechenoperationen dabei sind war die while-schleife um 60% schneller. Bedeutet das jetzt dass ich für alles (ausser das reine zählen) while-Schleifen verwenden sollte?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1140194</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1140194</guid><dc:creator><![CDATA[Janx]]></dc:creator><pubDate>Tue, 19 Sep 2006 09:38:15 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage zur Preformance on Tue, 19 Sep 2006 09:41:02 GMT]]></title><description><![CDATA[<p>Achso eins hab ich noch vergessen:<br />
Ich wollte testen wie genau die Zeitmessung überhaupt ist, und dabei kam raus, dass die Abweichung etwa 7 bis 8 ms beträgt. Ist das dann das minimale Zeitfenster des Betriebssystems von dem ich schon gelesen hab? (~10ms bei Windows).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1140195</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1140195</guid><dc:creator><![CDATA[Janx]]></dc:creator><pubDate>Tue, 19 Sep 2006 09:41:02 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage zur Preformance on Tue, 19 Sep 2006 10:25:07 GMT]]></title><description><![CDATA[<p>Du hast ja mitbekommen, dass Windows Zeitfenster hat, in denen das Programm ausgeführt hast. Das führt dazu, dass du &quot;kurze&quot; Strukturen nicht hinreichend genau messen kannst. (Ne for-schleife, die bis 100 zählt nimmt auf heutigen Rechner - fast - gar keine Zeit in Anspruch)</p>
<p>Deswegen musst du Codeteile, die du messen möchtest mehrfach ausführen und die Zeit über die gesamte Ausführung messen.</p>
<p>Wie das mit dem Zeitverhalten zwischen for- und while-Schleife aussieht, weiß ich nicht. Aber deine gemessenen 60% Unterschied zweifle ich <strong>sehr</strong> stark an.</p>
<p>Was auch ganz wichtig ist: Wenn du - zum Beispiel mit dem VC++ - im Debug-Modus misst und dann mal mit dem Release-Modus, wirst du auch Zeitunterschiede feststellen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1140228</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1140228</guid><dc:creator><![CDATA[DarthZiu]]></dc:creator><pubDate>Tue, 19 Sep 2006 10:25:07 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage zur Preformance on Tue, 19 Sep 2006 10:31:41 GMT]]></title><description><![CDATA[<p>Du kannst Dir auch eine Messstation basteln mit dem Performance Counter, zB so ähnlich wie in diesem Thread: <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-157925-and-highlight-is-%2Aperformancecounter%2A.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-157925-and-highlight-is-%2Aperformancecounter%2A.html</a></p>
<p>Die Genauigkeit ist rund um 10ms. Windows ist kein Echtzeit-OS.<br />
Hab mal mit 10000mal Sleep(10) getestet, gibt etwas zwischen 10.3 und 10.8 ms.<br />
Solltest auch drauf achten, dass ncht zuviel andere Prozesse laufen, um die Ergebnisse einigermassen genau vergleichen zu können</p>
<p>Aus while und for generiert der Compiler mit Optimierung an (/O2 oder /Ox) wohl ähnlichen Code. Wenn du im Debug misst, gibts schon unterschiede, aber im release mode sollten die minim sein.</p>
<p>Ansonsten gibts noch Profiler, wie <a href="http://developer.amd.com/downloads.aspx" rel="nofollow">CodeAnalyst von AMD</a>. (Ist gratis, man muss sich aber registrieren per eMail).<br />
Die zeigen Dir dann auf, wo wieviel Zeit verbraucht wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1140235</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1140235</guid><dc:creator><![CDATA[THX 1138]]></dc:creator><pubDate>Tue, 19 Sep 2006 10:31:41 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage zur Preformance on Tue, 19 Sep 2006 10:37:14 GMT]]></title><description><![CDATA[<p>Bei den Tests hab ich natürlich schon entsprechen viele Wiederholungen gemacht.</p>
<p>Einmal lasse ich die For- und die While-Schleife einfach bis 50 mio zählen.<br />
Dazu braucht die For-Schleife ~180 ms und die While-Schleife ~200 ms.</p>
<p>Dann lasse ich die For-und die While-Schleife 100 mio mal den Zähler quadrieren und an eine Variable übergeben.<br />
Dazu braucht dann die For-Schleife 406ms und die While-Schleife 236ms (also doch nicht 60%, aber trotzdem ein ziemlich großer Unterschied.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1140239</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1140239</guid><dc:creator><![CDATA[Janx]]></dc:creator><pubDate>Tue, 19 Sep 2006 10:37:14 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage zur Preformance on Tue, 19 Sep 2006 10:38:22 GMT]]></title><description><![CDATA[<p>Zeig mal den Quellcode dazu</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1140240</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1140240</guid><dc:creator><![CDATA[Knuddlbaer]]></dc:creator><pubDate>Tue, 19 Sep 2006 10:38:22 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage zur Preformance on Tue, 19 Sep 2006 10:40:42 GMT]]></title><description><![CDATA[<p>Hau mal die Optimierung rein und teste im Release Mode.</p>
<p>Edit:<br />
Ich hab auch schon festgestellt, dass for Schleifen ziemlich langsam sind im Debug Modus. Ist aber praktisch null im Release mit /Ox (VC++2k5).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1140241</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1140241</guid><dc:creator><![CDATA[THX 1138]]></dc:creator><pubDate>Tue, 19 Sep 2006 10:40:42 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage zur Preformance on Tue, 19 Sep 2006 10:42:13 GMT]]></title><description><![CDATA[<p>...oder den vom compiler erzeugten asm-code nehmen und unter 'nem simulator ausführen, der die verbrauchten taktzyklen zählt. z.b. sowas: <a href="http://www.simplescalar.com/" rel="nofollow">http://www.simplescalar.com/</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1140244</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1140244</guid><dc:creator><![CDATA[net 0]]></dc:creator><pubDate>Tue, 19 Sep 2006 10:42:13 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage zur Preformance on Tue, 19 Sep 2006 10:53:47 GMT]]></title><description><![CDATA[<p>Ah sorry für die Verwirrung, ich hatte einen Fehler im Code <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":/"
      alt="😕"
    /></p>
<p>Die For-Schleife ist etwas schneller beim zählen (~10%).</p>
<p>Die While-Schleife ist etwas schneller bei sonstigen berechnungen (nur ein paar Prozent).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1140251</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1140251</guid><dc:creator><![CDATA[Janx]]></dc:creator><pubDate>Tue, 19 Sep 2006 10:53:47 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage zur Preformance on Tue, 19 Sep 2006 11:03:09 GMT]]></title><description><![CDATA[<p>Code sieht so aus:</p>
<pre><code class="language-cpp">#include &lt;time.h&gt;
#include &lt;iostream&gt;
#include &lt;math.h&gt;

using namespace std;

void sleep(unsigned int mseconds)
{
    clock_t goal = mseconds + clock();
    while (goal &gt; clock());
}

int main(int argc, char *argv[])
{
    clock_t start, stop;
    int z = 0, i = 0;
    double l, k;

    sleep(1000);

    start = clock();
    for( z = 1; z &lt;= 50000000; z += 1);
    stop = clock();
    cout &lt;&lt; &quot;Dauer der For-Schleife (Zaehlen): &quot; &lt;&lt; (stop - start) &lt;&lt; endl;

    start = clock();
    while(i &lt;= 50000000)
    {
      i += 1;
    }
    stop = clock();
    cout &lt;&lt; &quot;Dauer der While-Schleife (Zaehlen): &quot; &lt;&lt; (stop - start) &lt;&lt; endl;

    i = 0;
    start = clock();
    for( z = 1; z &lt;= 100000000; z += 1)
    {
      k = (z*z);
    }
    stop = clock();
    cout &lt;&lt; &quot;Dauer der For-Schleife (Quadrieren): &quot; &lt;&lt; (stop - start) &lt;&lt; endl;

    start = clock();
    while(i &lt;= 100000000)
    {
      i += 1;
      l = (i*i);
    }
    stop = clock();
    cout &lt;&lt; &quot;Dauer der While-Schleife (Quadrieren): &quot; &lt;&lt; (stop - start) &lt;&lt; endl;

    i = 0;
    start = clock();
    for( z = 1; z &lt;= 10000000; z += 1)
    {
      k = pow(z, 0.5);
    }
    stop = clock();
    cout &lt;&lt; &quot;Dauer der For-Schleife (Math-Fkt): &quot; &lt;&lt; (stop - start) &lt;&lt; endl;

    start = clock();
    while(i &lt;= 10000000)
    {
      i += 1;
      l = pow(i, 0.5);
    }
    stop = clock();
    cout &lt;&lt; &quot;Dauer der While-Schleife (Math-Fkt): &quot; &lt;&lt; (stop - start) &lt;&lt; endl;

    sleep(5000);

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1140258</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1140258</guid><dc:creator><![CDATA[Janx]]></dc:creator><pubDate>Tue, 19 Sep 2006 11:03:09 GMT</pubDate></item></channel></rss>