<?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[Schleife]]></title><description><![CDATA[<p>Hallo!</p>
<pre><code class="language-cpp">// Schleife 5 mal durchlaufen --&gt; Allen Elementen 22 zuweisen
int *p1, vec[5];
for(p1=vec, p1&lt;vec+5, ++p1) { *p1=22 }

// Schleife 5 mal durchlaufen --&gt; Allen Elementen 22 zuweisen
int i, vec[5];
for(i=0; i&lt;5; ++i) { vec[i]=22 }
</code></pre>
<p>Ihr seht hier zwei verschiedene Möglichkeiten alle Elemente von vec auf 22 zu setzen.</p>
<p><strong>Höre immer wieder das Möglichkeit 1 mit einer &quot;schnelleren Laufzeit&quot; ausgeführt wird, stimmt das?</strong> <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=":confused:"
      alt="😕"
    /></p>
<p>Grund soll wohl sein, das der Compiler bei der ersten Konstruktion Konstante Werte schreibt &amp; festlegt, und bei Alternative 2 nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/186045/schleife</link><generator>RSS for Node</generator><lastBuildDate>Thu, 24 Sep 2026 06:36:44 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/186045.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 04 Jul 2007 12:09:13 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Schleife on Wed, 04 Jul 2007 12:09:13 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<pre><code class="language-cpp">// Schleife 5 mal durchlaufen --&gt; Allen Elementen 22 zuweisen
int *p1, vec[5];
for(p1=vec, p1&lt;vec+5, ++p1) { *p1=22 }

// Schleife 5 mal durchlaufen --&gt; Allen Elementen 22 zuweisen
int i, vec[5];
for(i=0; i&lt;5; ++i) { vec[i]=22 }
</code></pre>
<p>Ihr seht hier zwei verschiedene Möglichkeiten alle Elemente von vec auf 22 zu setzen.</p>
<p><strong>Höre immer wieder das Möglichkeit 1 mit einer &quot;schnelleren Laufzeit&quot; ausgeführt wird, stimmt das?</strong> <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=":confused:"
      alt="😕"
    /></p>
<p>Grund soll wohl sein, das der Compiler bei der ersten Konstruktion Konstante Werte schreibt &amp; festlegt, und bei Alternative 2 nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1318173</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1318173</guid><dc:creator><![CDATA[simmeY]]></dc:creator><pubDate>Wed, 04 Jul 2007 12:09:13 GMT</pubDate></item><item><title><![CDATA[Reply to Schleife on Wed, 04 Jul 2007 12:12:40 GMT]]></title><description><![CDATA[<p>wie wärs mit ausprobieren -&gt; clock()</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1318178</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1318178</guid><dc:creator><![CDATA[kenner der dummköpfe]]></dc:creator><pubDate>Wed, 04 Jul 2007 12:12:40 GMT</pubDate></item><item><title><![CDATA[Reply to Schleife on Wed, 04 Jul 2007 13:36:12 GMT]]></title><description><![CDATA[<p>kenner der dummköpfe schrieb:</p>
<blockquote>
<p>wie wärs mit ausprobieren -&gt; clock()</p>
</blockquote>
<p>Solche Micro-Unterschiede (wenn überhaupt) zuverlässig zu timen ist gar nicht so einfach. Und 'clock' reicht da mit Sicherheit nicht aus.</p>
<p>Also erkenn Dich mal selbst und lass Deine klugen Sprüche.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1318256</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1318256</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Wed, 04 Jul 2007 13:36:12 GMT</pubDate></item><item><title><![CDATA[Reply to Schleife on Wed, 04 Jul 2007 13:42:59 GMT]]></title><description><![CDATA[<p>mal meinen senf dazu geben #gg<br />
ich denk das die zeiger variante schneller sein muesste, aber nur extrem wenig</p>
<pre><code class="language-cpp">int *p1, vec[5];
for(p1=vec, p1&lt;vec+5, ++p1) { *p1=22 }
</code></pre>
<p>hier wird ein zeiger auf dem array erstellt, dieser wird auch inkrementiert und direkt zur zuweisung benutzt</p>
<pre><code class="language-cpp">int i, vec[5];
for(i=0; i&lt;5; ++i) { vec[i]=22 }
</code></pre>
<p>hier wird erst eine int variable erstellt, welche inkrementiert wird und dann wird erst zugegriffen</p>
<p>also ein int ist groesser als ein zeiger<br />
und bei vec[5] wird, soweit ich das glaub, noch ein zwischenschritt notwendig (differenziert)<br />
bei nem zeiger kannst du direkt damit arbeiten</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1318263</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1318263</guid><dc:creator><![CDATA[EXDW]]></dc:creator><pubDate>Wed, 04 Jul 2007 13:42:59 GMT</pubDate></item><item><title><![CDATA[Reply to Schleife on Wed, 04 Jul 2007 13:50:01 GMT]]></title><description><![CDATA[<p>Das ist doch eigentlich mal ganz interessant. Das muss sich doch irgendwie timen lassen, zumindest wenn man die Schleife verlängert, sagen wir das Feld hätte 10000 Elemente...<br />
Ich suche schon lange nach einer Möglichkeit sowas einigermaßen genau zu timen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1318271</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1318271</guid><dc:creator><![CDATA[WarMal]]></dc:creator><pubDate>Wed, 04 Jul 2007 13:50:01 GMT</pubDate></item><item><title><![CDATA[Reply to Schleife on Wed, 04 Jul 2007 13:51:59 GMT]]></title><description><![CDATA[<p>Mr Evil schrieb:</p>
<blockquote>
<pre><code class="language-cpp">int *p1, vec[5];
for(p1=vec, p1&lt;vec+5, ++p1) { *p1=22 }
</code></pre>
<p>hier wird ein zeiger auf dem array erstellt, dieser wird auch inkrementiert und direkt zur zuweisung benutzt</p>
</blockquote>
<p>… und außerdem wird für jeden Test eine Addition ausgeführt (die kann man herausziehen, dann erstellt man aber wieder ne Variable).</p>
<blockquote>
<p>also ein int ist groesser als ein zeiger</p>
</blockquote>
<p>Äh?</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

int main()
{
    std::cout &lt;&lt; sizeof(int) &lt;&lt; ' ' &lt;&lt; sizeof(int*) &lt;&lt; std::endl;
}
</code></pre>
<p>Ergibt auf meinem System:</p>
<pre><code>$ ./a.out
4 4
</code></pre>
<p>Ich vermute mal, dass die meisten optimierenden Compilern aus solch einem Code so ziemlich das gleiche machen werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1318272</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1318272</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Wed, 04 Jul 2007 13:51:59 GMT</pubDate></item><item><title><![CDATA[Reply to Schleife on Wed, 04 Jul 2007 13:54:02 GMT]]></title><description><![CDATA[<p>Am einfachsten ist's wohl, das ganze durch den Compiler zu jagen und den rauskommenden Assambler-Code zu vergleichen.</p>
<p>(aber ich würde mal sagen, die Schleifen müssten etwa gleich schnell sein - von Mikro-Optimierungen des Compilers mal abgesehen)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1318275</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1318275</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 04 Jul 2007 13:54:02 GMT</pubDate></item><item><title><![CDATA[Reply to Schleife on Wed, 04 Jul 2007 14:03:09 GMT]]></title><description><![CDATA[<p>WarMal schrieb:</p>
<blockquote>
<p>Das ist doch eigentlich mal ganz interessant. Das muss sich doch irgendwie timen lassen, zumindest wenn man die Schleife verlängert, sagen wir das Feld hätte 10000 Elemente...</p>
</blockquote>
<p>Wird nichts bringen, zumal ich vermute, dass hier alle möglichen Compiler was anderes draus bauen. Letztendlich müsste man sich den Assembler-Code anschauen.</p>
<blockquote>
<p>Ich suche schon lange nach einer Möglichkeit sowas einigermaßen genau zu timen.</p>
</blockquote>
<pre><code class="language-cpp">// timer.hpp
// Copyright blablablubbblubb

#ifndef MADRAT_SEQAN_TIMER_H
#define MADRAT_SEQAN_TIMER_H

#include &lt;iostream&gt;
#include &lt;iomanip&gt;

#ifdef WIN32
#   include &lt;windows.h&gt;
#else
#   error &quot;No compatible platform.&quot;
#endif

namespace madrat { namespace debug {

    class Timer {
    public:
        Timer(std::string const&amp; test)
            : m_test(test)
            , m_start(get_ticks())
        { }

        ~Timer()
        {
            using namespace std;
            LARGE_INTEGER stop = get_ticks();
            double duration = static_cast&lt;double&gt;(stop.QuadPart - m_start.QuadPart) /
                              static_cast&lt;double&gt;(m__frequency.QuadPart);
            cerr &lt;&lt; m_test &lt;&lt; setw(28) &lt;&lt; right &lt;&lt; setprecision(10) &lt;&lt; fixed &lt;&lt; duration &lt;&lt; 's';
        }

    private:
        static LARGE_INTEGER m__frequency;
        static BOOL const m__has_counter;

        std::string m_test;
        LARGE_INTEGER m_start;

        static LARGE_INTEGER get_ticks()
        {
            LARGE_INTEGER ret;
            ::QueryPerformanceCounter(&amp;ret);
            return ret;
        }
    };

    LARGE_INTEGER Timer::m__frequency = LARGE_INTEGER();
    BOOL const Timer::m__has_counter = ::QueryPerformanceFrequency(&amp;Timer::m__frequency);

} }

#endif // !defined(MADRAT_SEQAN_TIMER_H)
</code></pre>
<p>/EDIT: ROFL, mir fällt gerade auf, dass ich in einem Posting einen Unix-Compiler verwende und ein Kompilat per &quot;./a.out&quot; starte … und im nächsten Posting einen Windows-spezifischen Code hinklatsche. Na ja. Das eine ist halt Freizeit und das andere Arbeit.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1318281</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1318281</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Wed, 04 Jul 2007 14:03:09 GMT</pubDate></item><item><title><![CDATA[Reply to Schleife on Thu, 05 Jul 2007 05:22:28 GMT]]></title><description><![CDATA[<p>Sehr schön,</p>
<p>das ist zwar eine ganze Menge Windows-API für jemanden, der sich damit nicht auskennt und es ist wohl deshalb auch nicht standard-konform, aber:<br />
Es funktioniert und man kann den Header ja zum entwickeln einbinden und anschließend wieder rausschmeißen. Dankesehr.</p>
<p>P.S.<br />
Ich finde der Code wäre FAQ-geeignet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1318607</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1318607</guid><dc:creator><![CDATA[WarMal]]></dc:creator><pubDate>Thu, 05 Jul 2007 05:22:28 GMT</pubDate></item><item><title><![CDATA[Reply to Schleife on Thu, 05 Jul 2007 06:30:56 GMT]]></title><description><![CDATA[<p>Diese Antwort passt auch hier:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-186096.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-186096.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1318628</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1318628</guid><dc:creator><![CDATA[tntnet]]></dc:creator><pubDate>Thu, 05 Jul 2007 06:30:56 GMT</pubDate></item></channel></rss>