<?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[Häufigkeit von Methodenaufrufen in der selben Klasse]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich wüste gerne wie hoch der Anteil von Methodenaufrufen innerhalb einer Methode zu anderen Methoden der selben Klasseninstanz in Relation zu allen Methoden/Funktions-Aufrufen in einer Methode ist.</p>
<p>Hintergrund ist: ich entwickle zur zeit die Calling-Convention für eine neue CPU-Architektur und bin dabei auf die Idee gekommen das man den this-pointer (ist ja ein verstecktes Parameter) speziell behandeln könnte und ihn als callee-save deklariert. Wenn eine Klassen-Methode nur (Leaf-)Methoden aus der selben Klassen-Instanz aufrufen würde hätte das einen gewissen Performance-Vorteil da diese Methode das entsprechende Register gar nicht anfassen müsste. Diese Situation ist aber sicher nur bei Container-Klassen u.ä. realistisch und dort wird der Compiler sicher oft inlinen so das Calling-Conventions eh keine Rolle spielen. Wenn aber eine Methode vorwiegend Methoden anderer Klassen oder Instanzen (oder C-Funktionen) aufruft dann müssten alle aufgerufenen Methoden das entsprechende Register sichern (bei C-Funktionen natürlich die aufrufende Methode selber) ohne das die aufrufende Methode davon was hat. Daher meine Frage nach der Häufigkeit.</p>
<p>Es währe schön wenn mal ein paar Leute über ihre realen Applikationen schauen würden und mir ungefähr sagen könnten wie häufig es ist das eine Methode andere Methoden der selben Instanz aufruft. Dann hätte ich einen Ansatzpunkt ob sich eine Sonderbehandlung des this-Pointers lohnt oder eher kontraproduktiv ist.<br />
Schonmal vielen Dank im Voraus!</p>
<p>Grüße<br />
Erik</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/258871/häufigkeit-von-methodenaufrufen-in-der-selben-klasse</link><generator>RSS for Node</generator><lastBuildDate>Wed, 09 Sep 2026 00:50:32 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/258871.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 16 Jan 2010 10:55:42 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Häufigkeit von Methodenaufrufen in der selben Klasse on Sat, 16 Jan 2010 10:55:42 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich wüste gerne wie hoch der Anteil von Methodenaufrufen innerhalb einer Methode zu anderen Methoden der selben Klasseninstanz in Relation zu allen Methoden/Funktions-Aufrufen in einer Methode ist.</p>
<p>Hintergrund ist: ich entwickle zur zeit die Calling-Convention für eine neue CPU-Architektur und bin dabei auf die Idee gekommen das man den this-pointer (ist ja ein verstecktes Parameter) speziell behandeln könnte und ihn als callee-save deklariert. Wenn eine Klassen-Methode nur (Leaf-)Methoden aus der selben Klassen-Instanz aufrufen würde hätte das einen gewissen Performance-Vorteil da diese Methode das entsprechende Register gar nicht anfassen müsste. Diese Situation ist aber sicher nur bei Container-Klassen u.ä. realistisch und dort wird der Compiler sicher oft inlinen so das Calling-Conventions eh keine Rolle spielen. Wenn aber eine Methode vorwiegend Methoden anderer Klassen oder Instanzen (oder C-Funktionen) aufruft dann müssten alle aufgerufenen Methoden das entsprechende Register sichern (bei C-Funktionen natürlich die aufrufende Methode selber) ohne das die aufrufende Methode davon was hat. Daher meine Frage nach der Häufigkeit.</p>
<p>Es währe schön wenn mal ein paar Leute über ihre realen Applikationen schauen würden und mir ungefähr sagen könnten wie häufig es ist das eine Methode andere Methoden der selben Instanz aufruft. Dann hätte ich einen Ansatzpunkt ob sich eine Sonderbehandlung des this-Pointers lohnt oder eher kontraproduktiv ist.<br />
Schonmal vielen Dank im Voraus!</p>
<p>Grüße<br />
Erik</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1839661</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1839661</guid><dc:creator><![CDATA[erik.vikinger]]></dc:creator><pubDate>Sat, 16 Jan 2010 10:55:42 GMT</pubDate></item><item><title><![CDATA[Reply to Häufigkeit von Methodenaufrufen in der selben Klasse on Mon, 18 Jan 2010 07:32:23 GMT]]></title><description><![CDATA[<p>Hat da keiner ne grobe Abschätzung für mich? Nicht mal ein vages Bauchgefühl?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1840586</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1840586</guid><dc:creator><![CDATA[erik.vikinger]]></dc:creator><pubDate>Mon, 18 Jan 2010 07:32:23 GMT</pubDate></item><item><title><![CDATA[Reply to Häufigkeit von Methodenaufrufen in der selben Klasse on Mon, 18 Jan 2010 08:41:46 GMT]]></title><description><![CDATA[<p>erik.vikinger schrieb:</p>
<blockquote>
<p>Es währe schön wenn mal ein paar Leute über ihre realen Applikationen schauen würden und mir ungefähr sagen könnten wie häufig es ist das eine Methode andere Methoden der selben Instanz aufruft. Dann hätte ich einen Ansatzpunkt ob sich eine Sonderbehandlung des this-Pointers lohnt oder eher kontraproduktiv ist.</p>
</blockquote>
<p>Das hängt komplett vom Programmierstil ab. Beispiel: Entwickler A hat fast nur public Methoden, die sehr lang sind und ähnlicher Code wird einfach per Copy&amp;Paste ausgeschnitten, in neue Methoden eingefügt und den Bedürfnissen angepasst. Derartiger Code hat wenig bis garkeine Klasseninternen Methodenaufrufen, ist schwer wartbar und unübersichtlich.<br />
Entwickler B hat als Methoden fast ausschließlich kurze Methoden mit maximal 5 Zeilen, dafür aber langen und aussagekräftigen Namen, ein Verhältnis von privaten zu public Methoden von 10:1 und fast jede Methode ruft mindestens eine andere private Methode auf.<br />
Die beiden sind Extreme, in der Realität wird allerdings alles was dazwischen liegt angetroffen. Gerade älterer Code tendiert meiner Erfahrung nach eher zum ersten Extrem, wer &quot;Clean Code&quot; von Rober C. Martin gelesen hat und mit dem was dort steht einverstanden ist, wird meistens einen Kompromiss zwischen Faulheit/nötiger Zeitersparnis und Extrem B eingehen.</p>
<p>Soviel zur nicht vorhandenen groben Abschätzung. Was das Bacuhgefühl angeht: was du machen möchtest ist eine Art der Optimierung - und da haben Bauchgefühle rein garnichts zu suchen. Ich bin aber sicher dass es Codeanalyse-Tools gibt die dir deine Frage für <em>deinen</em> Code beantworten können.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1840603</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1840603</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Mon, 18 Jan 2010 08:41:46 GMT</pubDate></item><item><title><![CDATA[Reply to Häufigkeit von Methodenaufrufen in der selben Klasse on Mon, 18 Jan 2010 11:52:21 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>pumuckl schrieb:</p>
<blockquote>
<p>Soviel zur nicht vorhandenen groben Abschätzung.</p>
</blockquote>
<p>Mit so einer Antwort hatte ich fast gerechnet. Ich Danke Dir für Deine, sicherlich treffende, Beschreibung der Ist-Situation.</p>
<p>pumuckl schrieb:</p>
<blockquote>
<p>Was das Bacuhgefühl angeht: was du machen möchtest ist eine Art der Optimierung - und da haben Bauchgefühle rein garnichts zu suchen.</p>
</blockquote>
<p>Das Problem ist das Calling-Conventions schon recht strikt eingehalten werden sollten, da kann der Compiler nicht jedes mal nach Lust und Laune (oder irgendwelchen Code-Analysen) entscheiden wie er das handhaben will. Ich muss also vorher eine feste Entscheidung treffen die dann bindend ist. Das Zweite Problem ist das diese Optimierung ins Gegenteil umschlägt wenn sie nicht nötig ist. Ich könnte also Performance gewinnen, wenn der Code passend gestaltet ist (Extrem B), aber wenn der Code anders aussieht (Extrem A) dann wird es oft sogar Performance kosten, in Relation zur Situation wenn ich diese &quot;Optimierung&quot; nicht machen würde. Daher versuche ich also herauszubekommen welche Variante nun häufiger ist um dann eine Kosten-/Nutzen-Analyse machen zu können. Momentan sieht es aber eher so aus das ich diese Optimierung wohl besser lassen sollte. Außerdem könnte Link-Time-Optimization wahrscheinlich mehr herausholen.</p>
<p>pumuckl schrieb:</p>
<blockquote>
<p>Ich bin aber sicher dass es Codeanalyse-Tools gibt die dir deine Frage für <em>deinen</em> Code beantworten können.</p>
</blockquote>
<p>Dafür habe ich (noch) zu wenig eigenen C++-Code fabriziert als das da eine verwertbare Aussage entstehen könnte.</p>
<p>Grüße<br />
Erik</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1840688</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1840688</guid><dc:creator><![CDATA[erik.vikinger]]></dc:creator><pubDate>Mon, 18 Jan 2010 11:52:21 GMT</pubDate></item><item><title><![CDATA[Reply to Häufigkeit von Methodenaufrufen in der selben Klasse on Mon, 18 Jan 2010 12:54:17 GMT]]></title><description><![CDATA[<p>erik.vikinger schrieb:</p>
<blockquote>
<p>Das Problem ist das Calling-Conventions schon recht strikt eingehalten werden sollten, da kann der Compiler nicht jedes mal nach Lust und Laune (oder irgendwelchen Code-Analysen) entscheiden wie er das handhaben will. Ich muss also vorher eine feste Entscheidung treffen die dann bindend ist. Das Zweite Problem ist das diese Optimierung ins Gegenteil umschlägt wenn sie nicht nötig ist. Ich könnte also Performance gewinnen, wenn der Code passend gestaltet ist (Extrem B), aber wenn der Code anders aussieht (Extrem A) dann wird es oft sogar Performance kosten, in Relation zur Situation wenn ich diese &quot;Optimierung&quot; nicht machen würde. Daher versuche ich also herauszubekommen welche Variante nun häufiger ist um dann eine Kosten-/Nutzen-Analyse machen zu können. Momentan sieht es aber eher so aus das ich diese Optimierung wohl besser lassen sollte. Außerdem könnte Link-Time-Optimization wahrscheinlich mehr herausholen.</p>
</blockquote>
<p>Wie Pumuckl bereits erklärt hat, hängt das sehr stark vom Programmierer ab. Wenn du solch eine Entscheidung treffen musst, die sich negativ auf bestimmte Programmiertechniken auswirkt, dann gib einen Performanceguide für deine CPU heraus. Den lesen sich dann die Compilerhersteller durch und versuchen bei der Codeoptimierung alles so hin zu biegen, dass es für deine CPU passt, egal was der Programmierer gemacht hat.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1840713</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1840713</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 18 Jan 2010 12:54:17 GMT</pubDate></item></channel></rss>