<?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[Rückgabe per Referenz schneller?]]></title><description><![CDATA[<p>Was ist effizienter?</p>
<pre><code class="language-cpp">int add(int x, int y)
{
  return x + y;
}

int z;

z = add(1, 2);
</code></pre>
<pre><code class="language-cpp">void add(int x, int y, int &amp;result)
{
  result = x + y;
}

int z;

add(1, 2, z);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/180831/rückgabe-per-referenz-schneller</link><generator>RSS for Node</generator><lastBuildDate>Tue, 22 Sep 2026 00:16:47 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/180831.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 07 May 2007 09:12:50 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Rückgabe per Referenz schneller? on Mon, 07 May 2007 09:12:50 GMT]]></title><description><![CDATA[<p>Was ist effizienter?</p>
<pre><code class="language-cpp">int add(int x, int y)
{
  return x + y;
}

int z;

z = add(1, 2);
</code></pre>
<pre><code class="language-cpp">void add(int x, int y, int &amp;result)
{
  result = x + y;
}

int z;

add(1, 2, z);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1280136</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1280136</guid><dc:creator><![CDATA[__Stefan__]]></dc:creator><pubDate>Mon, 07 May 2007 09:12:50 GMT</pubDate></item><item><title><![CDATA[Reply to Rückgabe per Referenz schneller? on Mon, 07 May 2007 09:14:20 GMT]]></title><description><![CDATA[<p>Ein guter Compiler wird beides gleich übersetzen, also kein Unterschied.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1280140</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1280140</guid><dc:creator><![CDATA[TomasRiker]]></dc:creator><pubDate>Mon, 07 May 2007 09:14:20 GMT</pubDate></item><item><title><![CDATA[Reply to Rückgabe per Referenz schneller? on Mon, 07 May 2007 09:29:22 GMT]]></title><description><![CDATA[<p>Nee, stimmt so nicht, denn:</p>
<p>bei der Funktionsrückgabe wird der Return-Wert in Registern des Prozessors, d.h. ohne Speicherung im Hauptspeicher, zurückgegeben.</p>
<p>Bei der Rückgabe mittels Referenz müssen jedoch:</p>
<p>1. Die Adresse von result vom Stapel (langsamer Hauptspeicher) gelesen und in ein Register des Prozessors geschrieben,<br />
2. Der Wert von result über den Adress-Registerbezug auf dem Stapel gespeichert werden.</p>
<p>Ohne nun Befehlstakte zählen zu wollen, ist die Variante mit der Referenz deutlich langsamer, denn Hauptspeicherzugriffe, bei dieser Referenzübergabe mindestens 2x, dauern im Vergleich zu Registerzugriffe eine &quot;kleine Ewigkeit&quot;.</p>
<p>viele grüsse von tesu</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1280158</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1280158</guid><dc:creator><![CDATA[tesuji]]></dc:creator><pubDate>Mon, 07 May 2007 09:29:22 GMT</pubDate></item><item><title><![CDATA[Reply to Rückgabe per Referenz schneller? on Mon, 07 May 2007 09:38:38 GMT]]></title><description><![CDATA[<p>Betrachte die Funktion doch mal in ihrem Umfeld. In der ersten Version (mit Rückgabewert) hast du diese Speicherzugriffe genauso - nur liegen sie da nicht in der Funktion, sondern im aufrufenden Code. Und wie Tomas schon sagte, wird der Compiler bei beiden Lösungen etwas vergleichbares herausliefern (das nennt sich RVO - &quot;return value optimation&quot;).</p>
<p>Die erste Variante hat übrigens den Vorteil, daß du sie in einer komplexen Formel verwenden kannst - indem du den Rückgabewert nicht direkt speicherst, sondern einer anderen Funktion übergibst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1280161</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1280161</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 07 May 2007 09:38:38 GMT</pubDate></item><item><title><![CDATA[Reply to Rückgabe per Referenz schneller? on Mon, 07 May 2007 10:02:12 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>Die erste Variante hat übrigens den Vorteil, daß du sie in einer komplexen Formel verwenden kannst - indem du den Rückgabewert <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="🙂"
    /> <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="🙂"
    /> nicht direkt speicherst <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="🙂"
    /> :), sondern einer anderen Funktion übergibst.</p>
</blockquote>
<p>Genauso ist es: Die aufrufende Umgebung holt sich den Wert aus dem/den Register(n) und nicht vom Stapel --&gt; RVO.</p>
<p>Um fair zu bleiben, sollte ich allerdings sagen, dass reg-mem Zugriffe bei modernen RISC Prozessoren etwa gleich schnell sind wie reg-reg Zugriffe.</p>
<p>vg tesu,<br />
der der compilerbau im ws erfolgreich bestanden hat</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1280178</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1280178</guid><dc:creator><![CDATA[tesuji]]></dc:creator><pubDate>Mon, 07 May 2007 10:02:12 GMT</pubDate></item><item><title><![CDATA[Reply to Rückgabe per Referenz schneller? on Mon, 07 May 2007 12:32:41 GMT]]></title><description><![CDATA[<p>tesuji schrieb:</p>
<blockquote>
<p>vg tesu,<br />
der der compilerbau im ws erfolgreich bestanden hat</p>
</blockquote>
<p>Sowas macht ihr in Compilerbau? *Neid* Bei uns mach man nur die absoluten Grundlagen, also vom Umfang her die ersten paar Kapitel aus dem Drachenbuch. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":-("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1280263</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1280263</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Mon, 07 May 2007 12:32:41 GMT</pubDate></item></channel></rss>