<?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[Wann macht es Sinn inline zu nutzen?]]></title><description><![CDATA[<p>Hi,</p>
<p>ich frage mich gerade bis wann Inlining Sinn macht? Also z.B. wenn man in einer Funktion nur ein paar Werte addiert, oder auch wenn man nur eine Abfrage drin hat. Gibt es da irgendwelche Regeln? Wann nutzt ihr Inlining, wie sind eure Erfahrungen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/310476/wann-macht-es-sinn-inline-zu-nutzen</link><generator>RSS for Node</generator><lastBuildDate>Sun, 05 Apr 2026 11:35:59 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/310476.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 12 Nov 2012 16:04:59 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Wann macht es Sinn inline zu nutzen? on Mon, 12 Nov 2012 16:04:59 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich frage mich gerade bis wann Inlining Sinn macht? Also z.B. wenn man in einer Funktion nur ein paar Werte addiert, oder auch wenn man nur eine Abfrage drin hat. Gibt es da irgendwelche Regeln? Wann nutzt ihr Inlining, wie sind eure Erfahrungen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2270161</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2270161</guid><dc:creator><![CDATA[Lichtweite]]></dc:creator><pubDate>Mon, 12 Nov 2012 16:04:59 GMT</pubDate></item><item><title><![CDATA[Reply to Wann macht es Sinn inline zu nutzen? on Mon, 12 Nov 2012 16:05:51 GMT]]></title><description><![CDATA[<p>inline nutzt man nur, wenn man im Header Funktionen definiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2270162</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2270162</guid><dc:creator><![CDATA[inlineskater]]></dc:creator><pubDate>Mon, 12 Nov 2012 16:05:51 GMT</pubDate></item><item><title><![CDATA[Reply to Wann macht es Sinn inline zu nutzen? on Mon, 12 Nov 2012 16:48:29 GMT]]></title><description><![CDATA[<p>Ja schon klar, sonst kann der Compiler ja schlecht optimieren und der Linker muss dies übernehmen, was nicht so gut klappt. Beantwortet aber leider meine Frage nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2270179</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2270179</guid><dc:creator><![CDATA[Lichtweite]]></dc:creator><pubDate>Mon, 12 Nov 2012 16:48:29 GMT</pubDate></item><item><title><![CDATA[Reply to Wann macht es Sinn inline zu nutzen? on Mon, 12 Nov 2012 16:49:00 GMT]]></title><description><![CDATA[<p>Zur Erklärung: &quot;inline&quot; bewirkt nicht (zwangsläufig), dass deine Funktion geinlined wird. inlining und dieses Keyword haben eigentlich nicht (mehr) viel miteinander zu tun. Ob etwas geinlined wird oder nicht, entscheidet dein Compiler schon alleine, und das macht er wahrscheinlich wesentlich besser als du. Das Keyword &quot;inline&quot; bewirkt nur, dass die one-definition-rule aufgehoben wird. (-&gt; Ergo du kannst deine Funktionen in Headern definieren, die ja uU öfter #included werden, ohne dass der Linker sich beschwert.)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2270180</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2270180</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Mon, 12 Nov 2012 16:49:00 GMT</pubDate></item><item><title><![CDATA[Reply to Wann macht es Sinn inline zu nutzen? on Mon, 12 Nov 2012 17:02:13 GMT]]></title><description><![CDATA[<p>Was der TE wissen möchte: Wann entscheidet man sich, Funktionen im Header zu definieren?</p>
<p>Die Antwort ist aber nicht wirklich befriedigend: Wenn sie kurz sind und öfters benutzt werden. Aber das wusstest du sicherlich schon.</p>
<p>Ich verfahre nach der Regel &quot;Im Zweifelsfalle eher inline&quot; und fahre damit ziemlich gut. Wenn es wirklich drauf ankommt, kann man ein kritisches Codesegment (Profiler!) auch mal ohne Inline ausprobieren, da ein paar Effekte Vorstellbar sind, bei denen Code durch inline langsamer wird (dann wenn eine Funktion in einem Code öfters aufgerufen wird und durch das häufige Inlining der resultierende Maschinencode zu lang wird für einen der Zwischenspeicher in der CPU). Da man normalerweise bloß ungefähr eine solche Stelle pro Programm haben sollte, ist das keine große Arbeit.</p>
<p>Der Nachteil von inline (mehr Compilezeitabhängigkeiten) greift bei geschwindigkeitskritischen Programmen meistens nicht, da der Code insgesamt doch oft eher klein ist und selbst ein kompletter Rebuild nur Sekunden bis Minuten benötigt. Falls das Projekt nicht geschwindigkeitskritisch ist, dann braucht man auch nix inline zu machen, höchstens vielleicht triviale Einzeiler, die man niemals wieder ändern muss.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2270184</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2270184</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 12 Nov 2012 17:02:13 GMT</pubDate></item><item><title><![CDATA[Reply to Wann macht es Sinn inline zu nutzen? on Mon, 12 Nov 2012 19:08:06 GMT]]></title><description><![CDATA[<p>Danke, deine Erklärung hat mir schon geholfen. Bei mir geht es um Raytracing, also um genau zu sein auch um die verschiedenen Optimierungsstufen von normaler Deklaration/Definination über Inlining bis zum Schluß SIMD in Assembler. Ist alles nur ein Lernprojekt, aber zu jeder Stufe hole ich mir gerne Expertenmeinungen ein, da ich mir ein paar Sachen schon denken kann, aber so einiges doch übersehe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2270227</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2270227</guid><dc:creator><![CDATA[Lichtweite]]></dc:creator><pubDate>Mon, 12 Nov 2012 19:08:06 GMT</pubDate></item><item><title><![CDATA[Reply to Wann macht es Sinn inline zu nutzen? on Mon, 12 Nov 2012 19:10:26 GMT]]></title><description><![CDATA[<p>Man sollte noch sagen, dass der Compiler sehr wohl inlinen kann wenn die Funktion nicht in einem Header steht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2270229</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2270229</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Mon, 12 Nov 2012 19:10:26 GMT</pubDate></item><item><title><![CDATA[Reply to Wann macht es Sinn inline zu nutzen? on Mon, 12 Nov 2012 19:12:33 GMT]]></title><description><![CDATA[<p>Wär das nicht für den Linker?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2270230</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2270230</guid><dc:creator><![CDATA[linkischer troll]]></dc:creator><pubDate>Mon, 12 Nov 2012 19:12:33 GMT</pubDate></item><item><title><![CDATA[Reply to Wann macht es Sinn inline zu nutzen? on Mon, 12 Nov 2012 19:14:16 GMT]]></title><description><![CDATA[<p>Ach ja, wie das? Er sieht doch immer nur eine Einheit? Ist nicht der Linker das Programm welches erst wieder modulübergreifenden Zugriff hat?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2270232</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2270232</guid><dc:creator><![CDATA[Lichtweite]]></dc:creator><pubDate>Mon, 12 Nov 2012 19:14:16 GMT</pubDate></item><item><title><![CDATA[Reply to Wann macht es Sinn inline zu nutzen? on Mon, 12 Nov 2012 19:19:57 GMT]]></title><description><![CDATA[<p>Lichtweite schrieb:</p>
<blockquote>
<p>Ach ja, wie das? Er sieht doch immer nur eine Einheit? Ist nicht der Linker das Programm welches erst wieder modulübergreifenden Zugriff hat?</p>
</blockquote>
<p>Richtig, moderne Compiler/Linker unterstützen Link-Time Code Generation, ich denk der Name ist relativ selbsterklärend... <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/2270234</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2270234</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Mon, 12 Nov 2012 19:19:57 GMT</pubDate></item><item><title><![CDATA[Reply to Wann macht es Sinn inline zu nutzen? on Mon, 12 Nov 2012 19:32:23 GMT]]></title><description><![CDATA[<p>Diese Funktion macht dann das manuelle Inlining obsolet?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2270238</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2270238</guid><dc:creator><![CDATA[Lichtweite]]></dc:creator><pubDate>Mon, 12 Nov 2012 19:32:23 GMT</pubDate></item><item><title><![CDATA[Reply to Wann macht es Sinn inline zu nutzen? on Mon, 12 Nov 2012 19:51:47 GMT]]></title><description><![CDATA[<p>Der Punkt ist, dass der Zweck von inline, wie cooky451 schon gesagt hat, heutzutage eben vor allem die Ausnahme von der One Definition Rule ist. Verwend inline, aber verwend es mit Bedacht. Tu nicht einfach überall ein inline davor, in dem Glauben, dass das dann irgendwie magisch die Performance verbessert. Aber gut, der Rat gilt eh unabhängig davon, ob der Compiler jetzt LTCG unterstützt oder nicht...</p>
<p>Lichtweite schrieb:</p>
<blockquote>
<p>[...] bis zum Schluß SIMD in Assembler.</p>
</blockquote>
<p>Wenn du nicht gerade vor hast, weite Teile in Assembler zu schreiben, würde ich mir an deiner Stelle überlegen, ob es nicht besser wäre, entsprechende Intrinsics zu verwenden, statt Assembler. Zumindest Inline Assembler ist alles andere als optimal was Performance betrifft, da es den Compiler zwingt, rundherum den Optimizer abzuschalten. Und MSVC z.B. unterstützt für x64 etc. auch gar kein Inline Assembler mehr...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2270243</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2270243</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Mon, 12 Nov 2012 19:51:47 GMT</pubDate></item><item><title><![CDATA[Reply to Wann macht es Sinn inline zu nutzen? on Mon, 12 Nov 2012 19:47:57 GMT]]></title><description><![CDATA[<p>Lichtweite schrieb:</p>
<blockquote>
<p>Diese Funktion macht dann das manuelle Inlining obsolet?</p>
</blockquote>
<p>Ja ziemlich. Aber so ganz der Superhit ist es nicht, da man dadurch sehr lange Linkzeiten bekommt (praktisch so lang wie ein ganzer Build ohne Link-Time Optimization (LTO), was sehr nervig sein kann. Daher bevorzuge ich besonders für Entwicklungsversionen einen Build ohne LTO. Damit die aber trotzdem akzeptabel schnell laufen, muss alles was inline werden soll in einen Header. Was übrigens nicht so Umstellung, da ich sowieso sehr viel mit Templates programmiere.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2270244</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2270244</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 12 Nov 2012 19:47:57 GMT</pubDate></item><item><title><![CDATA[Reply to Wann macht es Sinn inline zu nutzen? on Mon, 12 Nov 2012 20:35:57 GMT]]></title><description><![CDATA[<p>Danke euch für die sehr interessanten Infos. Die intrinsische Funktionen kommen auf jeden Fall auch mit auf die toResearch-Liste.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2270265</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2270265</guid><dc:creator><![CDATA[Lichtweite]]></dc:creator><pubDate>Mon, 12 Nov 2012 20:35:57 GMT</pubDate></item></channel></rss>