<?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 benchmarken, echte verbrauchte Zeit&#x2F;Zyklen (Win2K) [gelöst]]]></title><description><![CDATA[<p>Hi,</p>
<p>ich möchte einige meiner Funktionen auf Effizienz testen und habe auch schon mit dem PerformanceCounter von Windows Erfolge erzielt. Leider bekommt die Konsolenanwendung, in der ich die Funktion teste, keine volle CPU Zeit. Wie kann ich es also anstellen, die zugeteilte CPU Zeit zu ermitteln? Ich möchte nur eine Routine benchmarken und möchte dafür nicht das Programm auf höchster Priorität laufen lassen. Das genialste wär, wenn ich die exakten CPU Zyklen bekommen könnte, die mein Programm schon verbraucht hat.</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/85175/performance-benchmarken-echte-verbrauchte-zeit-zyklen-win2k-gelöst</link><generator>RSS for Node</generator><lastBuildDate>Sat, 18 Apr 2026 04:35:28 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/85175.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 06 Sep 2004 12:40:53 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Performance benchmarken, echte verbrauchte Zeit&#x2F;Zyklen (Win2K) [gelöst] on Tue, 07 Sep 2004 14:50:49 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich möchte einige meiner Funktionen auf Effizienz testen und habe auch schon mit dem PerformanceCounter von Windows Erfolge erzielt. Leider bekommt die Konsolenanwendung, in der ich die Funktion teste, keine volle CPU Zeit. Wie kann ich es also anstellen, die zugeteilte CPU Zeit zu ermitteln? Ich möchte nur eine Routine benchmarken und möchte dafür nicht das Programm auf höchster Priorität laufen lassen. Das genialste wär, wenn ich die exakten CPU Zyklen bekommen könnte, die mein Programm schon verbraucht hat.</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/600661</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/600661</guid><dc:creator><![CDATA[c.rackwitz]]></dc:creator><pubDate>Tue, 07 Sep 2004 14:50:49 GMT</pubDate></item><item><title><![CDATA[Reply to Performance benchmarken, echte verbrauchte Zeit&#x2F;Zyklen (Win2K) [gelöst] on Mon, 06 Sep 2004 19:48:38 GMT]]></title><description><![CDATA[<p><a href="http://msdn.microsoft.com/library/en-us/dllproc/base/getprocesstimes.asp" rel="nofollow">GetProcessTimes</a> hilft dir vielleicht weiter <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="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/601091</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/601091</guid><dc:creator><![CDATA[flenders]]></dc:creator><pubDate>Mon, 06 Sep 2004 19:48:38 GMT</pubDate></item><item><title><![CDATA[Reply to Performance benchmarken, echte verbrauchte Zeit&#x2F;Zyklen (Win2K) [gelöst] on Tue, 07 Sep 2004 15:24:22 GMT]]></title><description><![CDATA[<p>danke flenders</p>
<p>meine Lösung:</p>
<pre><code class="language-cpp">// windows.h needed
long long processtime() {
	long long ctime, etime, ktime, utime;
	bool result = GetProcessTimes(GetCurrentProcess(), (FILETIME*)&amp;ctime, (FILETIME*)&amp;etime, (FILETIME*)&amp;ktime, (FILETIME*)&amp;utime);
	if (!result) return 0;
	return (ktime + utime); // 100 ns = 1s/10000000 = 1E-7
}
</code></pre>
<p>Die Funktion gibt die verbrauchte (Kernel- und User-) Zeit des Programms in Zehnmillionstel (1 / 10 000 000) Sekunden zurück.</p>
<p>GetProcessTimes()<br />
<a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/getprocesstimes.asp" rel="nofollow">http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/getprocesstimes.asp</a></p>
<p>GetCurrentProcess()<br />
<a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/getcurrentprocess.asp" rel="nofollow">http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/getcurrentprocess.asp</a></p>
<p>Warum schwankt der Verbrauch jetzt immernoch um einige Zehn Millisekunden, obwohl bei jedem Programmdurchlauf haargenau das gleiche im Programm abläuft? Das Programm ist sehr speicherintensiv (also alloc/free von ints und kleinen Objekten, Anzahl im einstelligen Millionenbereich) und benutzt Rekursion bis höchstens 10. Grad.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/601732</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/601732</guid><dc:creator><![CDATA[c.rackwitz]]></dc:creator><pubDate>Tue, 07 Sep 2004 15:24:22 GMT</pubDate></item><item><title><![CDATA[Reply to Performance benchmarken, echte verbrauchte Zeit&#x2F;Zyklen (Win2K) [gelöst] on Wed, 08 Sep 2004 07:59:19 GMT]]></title><description><![CDATA[<p>Der Verbrauch hängt wohl auch noch ein wenig davon ab, wie viele Seiten-Fehler (so hießt das glaub') beim Speicher-Zugriff entstehen und wie auf in den Kernel-Modus gewechselt wird etc.<br />
Aber &quot;einige Zehn Millisekunden&quot; sind doch dann bei dieser Dimension eigentlich nicht so wahnsinnig viel <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/602181</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/602181</guid><dc:creator><![CDATA[flenders]]></dc:creator><pubDate>Wed, 08 Sep 2004 07:59:19 GMT</pubDate></item><item><title><![CDATA[Reply to Performance benchmarken, echte verbrauchte Zeit&#x2F;Zyklen (Win2K) [gelöst] on Wed, 08 Sep 2004 12:10:03 GMT]]></title><description><![CDATA[<p>och, die Ausführung braucht wenige hundert Millisekunden für mehrere Millionen Funkionsaufrufe. Laut Benchmark soll die Funktion 200-300 Zyklen pro Durchlauf verbrauchen... dabei wird manchmal (etwa 10 bis 100 Mal insgesamt) Speicher angefordert (ein Listenobjekt) und etwas Speicher umkopiert, und hier und da ein Objekt angelegt und dynamische Listen erweitert (eine echte Performance Liste, nicht verkettet).<br />
Wenn sich jemand für den Code interessiert, einfach melden.</p>
<p>Lustiger Weise hat die ktime (Kernel Mode Zeit) Variable in meiner Funktion immer den Wert 0. Was ist Kernelmodus und warum geht mein Programm da rein?<br />
Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/602395</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/602395</guid><dc:creator><![CDATA[c.rackwitz]]></dc:creator><pubDate>Wed, 08 Sep 2004 12:10:03 GMT</pubDate></item><item><title><![CDATA[Reply to Performance benchmarken, echte verbrauchte Zeit&#x2F;Zyklen (Win2K) [gelöst] on Fri, 10 Sep 2004 08:51:05 GMT]]></title><description><![CDATA[<p>c.rackwitz schrieb:</p>
<blockquote>
<p>Lustiger Weise hat die ktime (Kernel Mode Zeit) Variable in meiner Funktion immer den Wert 0. Was ist Kernelmodus und warum geht mein Programm da rein?</p>
</blockquote>
<p>Afaik wird z.B. bei Funktionen wie WaitForSingleObject in den Kernelmodus gewechselt. Dann macht der Thread erstmal nichtsmehr, bis er eben von Windows wieder aktiviert wird. <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="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/603938</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/603938</guid><dc:creator><![CDATA[flenders]]></dc:creator><pubDate>Fri, 10 Sep 2004 08:51:05 GMT</pubDate></item></channel></rss>