<?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[C++11: Zeitdauer messen]]></title><description><![CDATA[<p>Wie messe ich mit C++11 möglichts genau, wie lange für das Ausführen eines Codestückes gebraucht wird?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/323422/c-11-zeitdauer-messen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 16 Jul 2026 02:43:56 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/323422.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 29 Jan 2014 13:45:12 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to C++11: Zeitdauer messen on Wed, 29 Jan 2014 13:45:12 GMT]]></title><description><![CDATA[<p>Wie messe ich mit C++11 möglichts genau, wie lange für das Ausführen eines Codestückes gebraucht wird?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2380387</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380387</guid><dc:creator><![CDATA[sdfds]]></dc:creator><pubDate>Wed, 29 Jan 2014 13:45:12 GMT</pubDate></item><item><title><![CDATA[Reply to C++11: Zeitdauer messen on Wed, 29 Jan 2014 13:48:05 GMT]]></title><description><![CDATA[<p>Das sollte grob beschrieben in etwa so funktionieren:</p>
<pre><code>auto Start = std::chrono::high_resolution_clock.now();
doSomething();
auto Stop = std::chrono::high_resolution_clock.now();
auto duration = Stop - Start;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2380389</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380389</guid><dc:creator><![CDATA[TNA]]></dc:creator><pubDate>Wed, 29 Jan 2014 13:48:05 GMT</pubDate></item><item><title><![CDATA[Reply to C++11: Zeitdauer messen on Wed, 29 Jan 2014 13:51:37 GMT]]></title><description><![CDATA[<p>Danke. Und wie gebe ich &quot;duration&quot; dann über cout aus?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2380390</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380390</guid><dc:creator><![CDATA[fsdf]]></dc:creator><pubDate>Wed, 29 Jan 2014 13:51:37 GMT</pubDate></item><item><title><![CDATA[Reply to C++11: Zeitdauer messen on Wed, 29 Jan 2014 13:54:11 GMT]]></title><description><![CDATA[<pre><code>#ifndef STOPWATCH_HPP
#define STOPWATCH_HPP

#include &lt;chrono&gt;

template &lt;typename Clock = std::chrono::steady_clock&gt;
class stopwatch
{
public:
	typedef Clock clock;
	typedef typename clock::time_point time_point;
	typedef typename clock::duration duration;

private:
	time_point last_;

public:
	stopwatch()
		: last_(clock::now())
	{}

	void reset()
	{
		*this = stopwatch();
	}

	time_point now() const
	{
		return clock::now();
	}

	duration elapsed() const
	{
		return now() - last_;
	}

	duration tick()
	{
		time_point dummy;
		return tick(dummy);
	}

	duration tick(time_point&amp; now_)
	{
		now_ = now();
		auto elapsed = now_ - last_;
		last_ = now_;
		return elapsed;
	}
};

typedef stopwatch&lt;&gt; default_stopwatch;

template &lt;typename T, typename Rep, typename Period&gt;
T duration_cast(const std::chrono::duration&lt;Rep, Period&gt;&amp; duration)
{
	return duration.count() * static_cast&lt;T&gt;(Period::num) / static_cast&lt;T&gt;(Period::den);
}

#endif

#inlcude &lt;iostream&gt;

int main()
{
    default_stopwatch sw;
    // Codestück
    auto duration = sw.elapsed();
    auto seconds = duration_cast&lt;double&gt;(duration);
    std::cout &lt;&lt; &quot;Seconds: &quot; &lt;&lt; seconds &lt;&lt; '\n';
}
</code></pre>
<p>Das ist zumindest C++11, für möglichst genau kannst du als Template-Parameter der stopwatch std::high_resolution_clock angeben, aber wie genau die ist ist nicht definiert. Du kannst allerdings auch einfach deine eigene clock implementieren die das TrivialClock concept erfüllt. <a href="http://en.cppreference.com/w/cpp/concept/TrivialClock" rel="nofollow">http://en.cppreference.com/w/cpp/concept/TrivialClock</a></p>
<p><a href="http://en.cppreference.com/w/cpp/header/chrono" rel="nofollow">http://en.cppreference.com/w/cpp/header/chrono</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2380391</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380391</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Wed, 29 Jan 2014 13:54:11 GMT</pubDate></item><item><title><![CDATA[Reply to C++11: Zeitdauer messen on Wed, 29 Jan 2014 14:01:11 GMT]]></title><description><![CDATA[<p>fsdf schrieb:</p>
<blockquote>
<p>Danke. Und wie gebe ich &quot;duration&quot; dann über cout aus?</p>
</blockquote>
<p>Nehmen wir an du möchtest die Dauer in Nanosekunden haben:</p>
<pre><code>uning namespace std;
cout &lt;&lt; &quot;Duration in ns: &quot; &lt;&lt; crono::nanoseconds(duration).count() &lt;&lt; '\n';
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2380393</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380393</guid><dc:creator><![CDATA[TNA]]></dc:creator><pubDate>Wed, 29 Jan 2014 14:01:11 GMT</pubDate></item><item><title><![CDATA[Reply to C++11: Zeitdauer messen on Wed, 29 Jan 2014 14:15:19 GMT]]></title><description><![CDATA[<p>cooky451 schrieb:</p>
<blockquote>
<pre><code>auto seconds = duration_cast&lt;double&gt;(duration);
</code></pre>
</blockquote>
<p>Müsste das nicht eher so heißen:</p>
<pre><code>auto seconds = chrono::duration_cast&lt;chrono::seconds&gt; (duration).count();
</code></pre>
<p>?</p>
<p>Kann man wirklich eine duration einfach in einen double casten und das sind dann immer Sekunden?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2380401</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380401</guid><dc:creator><![CDATA[TNA]]></dc:creator><pubDate>Wed, 29 Jan 2014 14:15:19 GMT</pubDate></item><item><title><![CDATA[Reply to C++11: Zeitdauer messen on Wed, 29 Jan 2014 14:25:57 GMT]]></title><description><![CDATA[<p>cooky451 schrieb:</p>
<blockquote>
<pre><code>void reset()
{
	*this = stopwatch();
}
</code></pre>
</blockquote>
<p>Das Idiom gefällt mir! <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/2380409</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380409</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 29 Jan 2014 14:25:57 GMT</pubDate></item><item><title><![CDATA[Reply to C++11: Zeitdauer messen on Wed, 29 Jan 2014 14:36:35 GMT]]></title><description><![CDATA[<p>Anstatt das von Hand zu messen, willst du vermutlich eher einen Profiler benutzen. Die können Performancemessungen viel besser.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2380414</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380414</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 29 Jan 2014 14:36:35 GMT</pubDate></item><item><title><![CDATA[Reply to C++11: Zeitdauer messen on Wed, 29 Jan 2014 14:39:28 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Anstatt das von Hand zu messen, willst du vermutlich eher einen Profiler benutzen. Die können Performancemessungen viel besser.</p>
</blockquote>
<p>Hat VC++2013 Express einen Profiler?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2380415</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380415</guid><dc:creator><![CDATA[stimmt, aber]]></dc:creator><pubDate>Wed, 29 Jan 2014 14:39:28 GMT</pubDate></item><item><title><![CDATA[Reply to C++11: Zeitdauer messen on Wed, 29 Jan 2014 15:40:25 GMT]]></title><description><![CDATA[<p>TNA schrieb:</p>
<blockquote>
<p>Kann man wirklich eine duration einfach in einen double casten und das sind dann immer Sekunden?</p>
</blockquote>
<p>Nein, die Funktion ist von mir. Mir fällt nur kein besserer Name ein als duration_cast. <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/2380437</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380437</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Wed, 29 Jan 2014 15:40:25 GMT</pubDate></item><item><title><![CDATA[Reply to C++11: Zeitdauer messen on Wed, 29 Jan 2014 17:02:05 GMT]]></title><description><![CDATA[<p>stimmt, aber schrieb:</p>
<blockquote>
<p>SeppJ schrieb:</p>
<blockquote>
<p>Anstatt das von Hand zu messen, willst du vermutlich eher einen Profiler benutzen. Die können Performancemessungen viel besser.</p>
</blockquote>
<p>Hat VC++2013 Express einen Profiler?</p>
</blockquote>
<p>nimm halt irgendein kostenloses profilingtool. ich empfehle verysleepy.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2380469</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380469</guid><dc:creator><![CDATA[Fytch]]></dc:creator><pubDate>Wed, 29 Jan 2014 17:02:05 GMT</pubDate></item></channel></rss>