<?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[Funktionspointer und Inline]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich habe eine Event-State-Machine, bei der je nach Event und Zustand ein bestimmter Funktionspointer eine passende, sehr kleine Funktion aufruft.</p>
<p>Frage 1: Hindert irgend etwas den Compiler daran, solche Funktionen inline zu machen?</p>
<p>Frage 2: Wie kann man zuverlässig erkennen, ob eine Funktion inline compiliert wurde? Im Profiler werden die Funktionsaufrufe angezeigt, daher nehme ich an, daß die inline-Empfehlung ignoriert wurde. Ich arbeite mit g++ und kprof.</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/271158/funktionspointer-und-inline</link><generator>RSS for Node</generator><lastBuildDate>Sat, 29 Aug 2026 15:54:30 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/271158.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 23 Jul 2010 16:42:49 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Funktionspointer und Inline on Fri, 23 Jul 2010 16:42:49 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich habe eine Event-State-Machine, bei der je nach Event und Zustand ein bestimmter Funktionspointer eine passende, sehr kleine Funktion aufruft.</p>
<p>Frage 1: Hindert irgend etwas den Compiler daran, solche Funktionen inline zu machen?</p>
<p>Frage 2: Wie kann man zuverlässig erkennen, ob eine Funktion inline compiliert wurde? Im Profiler werden die Funktionsaufrufe angezeigt, daher nehme ich an, daß die inline-Empfehlung ignoriert wurde. Ich arbeite mit g++ und kprof.</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1930810</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1930810</guid><dc:creator><![CDATA[cout2]]></dc:creator><pubDate>Fri, 23 Jul 2010 16:42:49 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionspointer und Inline on Fri, 23 Jul 2010 16:45:18 GMT]]></title><description><![CDATA[<p>1. Nein.<br />
2. Warum ist das relevant? Man sieht es sicher im Assemblercode, aber ich weiss nicht, wie leicht das zu finden ist, wenn da richtig optimiert wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1930811</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1930811</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Fri, 23 Jul 2010 16:45:18 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionspointer und Inline on Fri, 23 Jul 2010 17:38:25 GMT]]></title><description><![CDATA[<p>Ob eine Funktion &quot;inline ist&quot;, hängt ganz vom Programmierer ab.<br />
Ob eine Funktion &quot;geinlined wird&quot;, ist Sache des Compilers.</p>
<p>Wenn Du an einer Stelle aus einer Tabelle einen Funktionszeiger rausholen musst und dies Abhängig von einem zur Laufzeit bestimmten Wert ist, kann der Funktionsaufruf an der Stelle natürlich nicht &quot;geinlined&quot; werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1930841</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1930841</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Fri, 23 Jul 2010 17:38:25 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionspointer und Inline on Fri, 23 Jul 2010 17:56:22 GMT]]></title><description><![CDATA[<p>Wenn deine Event-State-Machine aber compiletime-konstant ist, könntest du diese ggf. hardcodieren, um ein inlining wieder zu ermöglichen:</p>
<pre><code class="language-cpp">state1:
    switch(nextEvent()) {

    case event1: 
        call_function_xyz(); //kein FP nötig
        goto state42;

    case event2:
        call_function_qwerty();  //kein FP nötig
        goto state77;

    ...

    }

state2:
    switch(nextEvent()) {

    ....
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1930850</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1930850</guid><dc:creator><![CDATA[life]]></dc:creator><pubDate>Fri, 23 Jul 2010 17:56:22 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionspointer und Inline on Fri, 23 Jul 2010 19:47:51 GMT]]></title><description><![CDATA[<p>drakon schrieb:</p>
<blockquote>
<p>1. Nein.<br />
2. Warum ist das relevant? Man sieht es sicher im Assemblercode, aber ich weiss nicht, wie leicht das zu finden ist, wenn da richtig optimiert wird.</p>
</blockquote>
<p>Das ist relevant, weil ich Ärger mit der Laufzeit habe. Die Mini-Funktionen werden millionenfach aufgerufen. Daher ist der Automat zwar elegant, aber zu langsam, wenn kein inlining geht.</p>
<p>lg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1930880</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1930880</guid><dc:creator><![CDATA[cout2]]></dc:creator><pubDate>Fri, 23 Jul 2010 19:47:51 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionspointer und Inline on Fri, 23 Jul 2010 19:58:23 GMT]]></title><description><![CDATA[<p>krümelkacker schrieb:</p>
<blockquote>
<p>Wenn Du an einer Stelle aus einer Tabelle einen Funktionszeiger rausholen musst und dies Abhängig von einem zur Laufzeit bestimmten Wert ist, kann der Funktionsaufruf an der Stelle natürlich nicht &quot;geinlined&quot; werden.</p>
</blockquote>
<p>Ah, das ist übel, denn genau das passiert hier. Gibt es denn gar keine Chance,<br />
da irgendwie mit einer Funktionspointer-Tabelle zu arbeiten? Sonst muß ich das<br />
Ding wirklich mit switch schreiben, wie 'life' schon vorgeschlagen hat. Wär schade, denn da habe ich viel Arbeit investiert.</p>
<p>lg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1930884</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1930884</guid><dc:creator><![CDATA[cout2]]></dc:creator><pubDate>Fri, 23 Jul 2010 19:58:23 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionspointer und Inline on Fri, 23 Jul 2010 20:02:20 GMT]]></title><description><![CDATA[<p>cout2 schrieb:</p>
<blockquote>
<p>drakon schrieb:</p>
<blockquote>
<p>1. Nein.<br />
2. Warum ist das relevant? Man sieht es sicher im Assemblercode, aber ich weiss nicht, wie leicht das zu finden ist, wenn da richtig optimiert wird.</p>
</blockquote>
<p>Das ist relevant, weil ich Ärger mit der Laufzeit habe. Die Mini-Funktionen werden millionenfach aufgerufen. Daher ist der Automat zwar elegant, aber zu langsam, wenn kein inlining geht.</p>
<p>lg</p>
</blockquote>
<p>Lächerlich...</p>
<p>Wenn es wirklich so wichtig ist, dann kopier es überall rein um zu testen, ob<br />
es was bringt.</p>
<p>Meine These: Bringt 0</p>
<p>Was willste jetzt tun?<br />
Evtl. hat dein Compiler ein paar Flags die deinem Wunsch nachkommen könnten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1930887</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1930887</guid><dc:creator><![CDATA[Inline suckz]]></dc:creator><pubDate>Fri, 23 Jul 2010 20:02:20 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionspointer und Inline on Fri, 23 Jul 2010 20:05:22 GMT]]></title><description><![CDATA[<p>lol... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
<p>Ich bin auch nicht mehr ganz wach ^^<br />
Wie soll ein Verweis, der sich theoretisch verändern kann denn geinlinet werden <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1930888</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1930888</guid><dc:creator><![CDATA[Inline suckz]]></dc:creator><pubDate>Fri, 23 Jul 2010 20:05:22 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionspointer und Inline on Fri, 23 Jul 2010 20:13:25 GMT]]></title><description><![CDATA[<p>Inline suckz schrieb:</p>
<blockquote>
<p>Lächerlich...</p>
<p>Wenn es wirklich so wichtig ist, dann kopier es überall rein um zu testen, ob<br />
es was bringt.</p>
<p>Meine These: Bringt 0</p>
<p>Was willste jetzt tun?<br />
Evtl. hat dein Compiler ein paar Flags die deinem Wunsch nachkommen könnten.</p>
</blockquote>
<p>Aus Erfahrung kann ich Dir versichern, daß Inlining bei millionenfach aufgerufenen Mini-Funktionen die Laufzeit sehr stark beeinflußt. Wenn man ein Anhänger von 1000-Zeilen-Funktionen ist, wird mans natürlich nicht spüren.</p>
<p>lg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1930893</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1930893</guid><dc:creator><![CDATA[cout2]]></dc:creator><pubDate>Fri, 23 Jul 2010 20:13:25 GMT</pubDate></item></channel></rss>