<?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[Performace Funktion]]></title><description><![CDATA[<p>Angenommen ich habe die Klasse Auto:</p>
<pre><code class="language-cpp">class Auto{

public:
    blubb
    void kaputt(int a, int b) //gleich dazu mehr

private:
    vector&lt;Rad&gt; AutoRad(4);
}
</code></pre>
<p>die Funktion kaputt soll jetzt berechnen, ob Rad Nr. a und Rad Nr. b kaputt sind.</p>
<p>Sollte man hier vielleicht auch mit Referenzen arbeiten, also:</p>
<pre><code class="language-cpp">void kaputt(int&amp; a, int&amp; b)
</code></pre>
<p>oder ist es sinnvoller die Funktion so aufzurufen:</p>
<pre><code class="language-cpp">void kaputt(Rad &amp;RadA, Rad RadB&amp;)
</code></pre>
<p>Das Beispiel hab ich mir jetzt irgendwie ausgedacht, damit ich meine Frage formulieren kann, es soll jetzt nicht sinnvoll in sich sein.</p>
<p>Ich würde gerne wissen, welche Funktion die beste Performance hat.<br />
Ob es sich lohnt &amp;int anstatt int aufzurufen, oder aber besser gleich die Referenz auf das Objekt mit welchem man irgendwas berechnet.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/235578/performace-funktion</link><generator>RSS for Node</generator><lastBuildDate>Thu, 24 Sep 2026 04:07:39 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/235578.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 03 Mar 2009 21:42:47 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Performace Funktion on Tue, 03 Mar 2009 21:42:47 GMT]]></title><description><![CDATA[<p>Angenommen ich habe die Klasse Auto:</p>
<pre><code class="language-cpp">class Auto{

public:
    blubb
    void kaputt(int a, int b) //gleich dazu mehr

private:
    vector&lt;Rad&gt; AutoRad(4);
}
</code></pre>
<p>die Funktion kaputt soll jetzt berechnen, ob Rad Nr. a und Rad Nr. b kaputt sind.</p>
<p>Sollte man hier vielleicht auch mit Referenzen arbeiten, also:</p>
<pre><code class="language-cpp">void kaputt(int&amp; a, int&amp; b)
</code></pre>
<p>oder ist es sinnvoller die Funktion so aufzurufen:</p>
<pre><code class="language-cpp">void kaputt(Rad &amp;RadA, Rad RadB&amp;)
</code></pre>
<p>Das Beispiel hab ich mir jetzt irgendwie ausgedacht, damit ich meine Frage formulieren kann, es soll jetzt nicht sinnvoll in sich sein.</p>
<p>Ich würde gerne wissen, welche Funktion die beste Performance hat.<br />
Ob es sich lohnt &amp;int anstatt int aufzurufen, oder aber besser gleich die Referenz auf das Objekt mit welchem man irgendwas berechnet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1673745</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1673745</guid><dc:creator><![CDATA[laraM]]></dc:creator><pubDate>Tue, 03 Mar 2009 21:42:47 GMT</pubDate></item><item><title><![CDATA[Reply to Performace Funktion on Tue, 03 Mar 2009 21:50:05 GMT]]></title><description><![CDATA[<p>also kommst drauf an was du in der funktion machst<br />
die standart typen (int, char, double...) lohnen sich nicht per referenzenzu übergeben</p>
<p>aber eigene typen eigendlich schon, aber im normalfall werden die als const &amp; übergeben, weil was passiert hier:</p>
<pre><code class="language-cpp">void foo(std::string &amp; s)
{
    //mach was
}

int main()
{
    std::string s1 = &quot;test&quot;;
    foo(s1);
    foo(&quot;test&quot;);
}
</code></pre>
<p>beim zweiten könnte der compiler dir ne fehlermeldung annen kopf schmeissen oder dir schmierts programm ab</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1673753</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1673753</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Tue, 03 Mar 2009 21:50:05 GMT</pubDate></item><item><title><![CDATA[Reply to Performace Funktion on Tue, 03 Mar 2009 22:01:05 GMT]]></title><description><![CDATA[<p>Skym0sh0, ich glaube, du hast das Thema ein wenig verfehlt. <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>
<p>Kommt auch drauf an, wie du von aussen Zugriff auf die Räder hast. Denn je nachdem kannst du gar keine Räder direkt übergeben.</p>
<p>Welche Funktionalität ist dir lieber? Zahlen sind grundsätzlich sicherer, da auch Räder von anderen Autos übergeben werden können, während bei den Indizes eine einfache Bereichsprüfung reicht. Zudem würde die Abfrage auf Räder wahrscheinlich auf sowas hinauslaufen:</p>
<pre><code class="language-cpp">Auto MeinFiat;
bool DrittesRadKapput = MeinFiat.kapput(MeinFiat.getRad(3));
</code></pre>
<p>Da kannst du gleich auf die Nummern prüfen. Aber eben, je nach Kontext ist das halt unterschiedlich...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1673764</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1673764</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 03 Mar 2009 22:01:05 GMT</pubDate></item><item><title><![CDATA[Reply to Performace Funktion on Wed, 04 Mar 2009 05:58:45 GMT]]></title><description><![CDATA[<p>laraM schrieb:</p>
<blockquote>
<p>Ich würde gerne wissen, welche Funktion die beste Performance hat.</p>
</blockquote>
<p>Das hängt von verschiedensten Faktoren ab, meist kann man das so pauschal nicht sagen, es sei denn du baust in einer der Funktionen einen dicken Schnitzer ein. Davon mal abgesehen lohnt sich für die Performanceeinbußen nicht, sich darüber Gedanken zu machen. In den Meisten Fällen wo hier im Forum nach Performance gefragt wird hat der Fragesteller schon durch Eröffnen des Posts mehr Lebenszeit verloren als er durch Optimierungen an der jeweiligen Funtkion je wieder wettmachen kann.</p>
<p>Generelle Richtlinie zum Vorgehen für gute und schnelle Programme:</p>
<p>- Entwerfe ein gut zu wartendes Programm mit ordentlichem Design.<br />
- <strong>Denke dabei nicht an Performance</strong> sondern an verständliches, erweiterbares, wiederverwendbares und leicht wartbares Design.<br />
- Implementiere deine Funktionen klar gegliedert mit sinnvollen Algorithmen.<br />
- <strong>Denke dabei nicht an Performance</strong> sondern an lesbaren und verständlichen Code.<br />
- Teste dein fertiges Programm gründlich auf Bugs und behebe diese<br />
- <strong>Denke dabei nicht an Performance</strong>, es sei denn du stellst fest dass es irgendwo doch recht lang dauert.<br />
- Wenn du jetzt tatsächlich festgestellt hast dass es ein Performanceproblem gibt, dann benutze einen Profiler um das Problem zu lokalisieren.<br />
- Erst <em>jetzt</em> lohnt es sich, sich Gedanken über die Performance einzelner Implementierungen zu machen.</p>
<p>Oder um ein bekanntes Zitat zu bringen:</p>
<p>Donald Knuth schrieb:</p>
<blockquote>
<p>Premature optimization is the root of all evil</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1673819</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1673819</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Wed, 04 Mar 2009 05:58:45 GMT</pubDate></item><item><title><![CDATA[Reply to Performace Funktion on Wed, 04 Mar 2009 07:18:25 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>...</p>
</blockquote>
<p>Diese Zusammenstellung ist so gut das sie IMHO in die FAQ gehört <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/1673841</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1673841</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Wed, 04 Mar 2009 07:18:25 GMT</pubDate></item><item><title><![CDATA[Reply to Performace Funktion on Wed, 04 Mar 2009 10:40:14 GMT]]></title><description><![CDATA[<p>asc schrieb:</p>
<blockquote>
<p>pumuckl schrieb:</p>
<blockquote>
<p>...</p>
</blockquote>
<p>Diese Zusammenstellung ist so gut das sie IMHO in die FAQ gehört <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>
</blockquote>
<p>kommt nicht in die FAQ, weil zu dogmatisch und falsch.</p>
<p>richtig ist:<br />
denke während der gesamten entwicklung auch an performance, oder es kommt blöder mist raus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1673979</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1673979</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Wed, 04 Mar 2009 10:40:14 GMT</pubDate></item><item><title><![CDATA[Reply to Performace Funktion on Wed, 04 Mar 2009 10:56:05 GMT]]></title><description><![CDATA[<p>Da gibt es auch einen recht guten Artikel drüber. Keinaussage: Denke bei der Wahl der Algorithmen immer auch an den Einsatz dieser und die daruse resultierende Performance, sonst können am Ende ziemlich üble Überraschungen auftauchen ( was ich schon mehrmals in verschiedenen Projekten festellen musste ). Vielleicht kennt jemand ja den Link, ich hab den leider verloren.</p>
<p>Gruß Kimmi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1673993</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1673993</guid><dc:creator><![CDATA[kimmi]]></dc:creator><pubDate>Wed, 04 Mar 2009 10:56:05 GMT</pubDate></item><item><title><![CDATA[Reply to Performace Funktion on Wed, 04 Mar 2009 13:53:58 GMT]]></title><description><![CDATA[<p>kimmi schrieb:</p>
<blockquote>
<p>Keinaussage: Denke bei der Wahl der Algorithmen immer auch an den Einsatz dieser und die daruse resultierende Performance,</p>
</blockquote>
<p>Das ist das, was ich mit &quot;sinnvollen Algorithmen&quot; sagen wollte. Natürlich soll das &quot;denk dabei nicht an die Performance&quot; nicht bedeuten, dass man seinen gesunden Menschneverstand ausschalten sollte.<br />
Ich versuchs also nochmal umzuformulieren:</p>
<p>- Designe dein Programm so, dass es zwar möglichst schlank ist, aber nicht auf Kosten der Wartbarkeit, Verständlichkeit und Übersichtlichkeit. Das heißt: Du solltest nicht nur aus Performanceängsten auf zusätzliche Abstraktionen, Indirektionen und ähnliches verzichten.<br />
- Finde für deine Funktionen möglichst schnelle Algorithmen, aber implementiere sie dennoch verständlich und nachvollziehbar. Das heißt: versuche nicht, nur aus Performancegründen alles unter Verwendung von Pointerarithmetik, trickreichem Einsatz von Bitmanipulationen und der kleveren Ausnutzung von Kurzschlussoperatoren in einen Ausdruck zu quetschen.<br />
- Kenne die üblichen Verdächtigen für schnelleren Code (z.B. ++iter vs. iter++), sei aber bereit darauf zu verzichten wenn es sein muss. Einige brechen sich einen ab um eine Zeile &quot;optimalen&quot; Code zu erzeugen und erzeugen dafür 10 Zeilen schlimmeren Code der zudem noch schlechter lesbar (und damit schlechter wartbar und debugbar) ist.<br />
- Halte dich nicht mit Kleinigkeiten auf, nur weil du glaubst du könntest die Performance in einer einzelnen Zeile Code verbessern. Eine einzelne eventuell unnötige Objektkopie fällt nicht groß ins Gewicht oder wird sogar ganz weg optimiert.</p>
<p>Grundsätzlich gilt, den Aufwand einer &quot;Optimierung&quot; gegen den Gewinn abzuschätzen, wobei der Aufwand nicht nur das Entwerfen und Tippen des Codes umfasst sondern auch die Zeit die man damit verbringt sich beim Debuggen und durchlesen verständlich zu machen, was da eigentlich vor sich geht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1674139</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1674139</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Wed, 04 Mar 2009 13:53:58 GMT</pubDate></item><item><title><![CDATA[Reply to Performace Funktion on Wed, 04 Mar 2009 14:27:37 GMT]]></title><description><![CDATA[<p>jup. und dem würde ich noch hinzufügen:</p>
<p>- der einfachere code tendiert normalerweise dahin, am ende doch der schnellere code zu sein, denn die *fetten* optimierungen kann man nur finden, wenn das prog toll übersichtlich ist, und nur einbauen, wenn es gut wartbar ist.</p>
<p>- man sollte sich mit mit laufzeitabschätzungen beschäftigen und wenn man auf kosten der wartbarkeit aus einem O(n^2) ein O(n) macht oder aus O(n) ein O(log(n)), dann geht das meistens schon ok. erstetzt man aber ein O(1) durch ein schnelleres O(1), ist das allermeistens grober unfug.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1674167</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1674167</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Wed, 04 Mar 2009 14:27:37 GMT</pubDate></item></channel></rss>