0
Inline function
It is a good programming practice to maintain the code of inline function as short as possible. It may improve the execution of the code if used wisely otherwise it may behave inversely. justify with solid reason
8 ответов
+ 3
According to the draft (n4296), §7.1.2, p.151 ¹
" [...] The inline specifier indicates to the implementation that inline substitution of the function body at the point of call is to be PREFERRED ² to the usual function call mechanism. An implementation is NOT ³ required to perform this inline substitution at the point of call [...]. "
[emphasize is mine]
So, in general, inlining a function isn't something that the programmer should be concerned about. Today's compilers are sophisticated enough to take care of such micro-optimizations during the compilation phase; however we can't blame those programmers who used to give a hint to archaic ones in the past.
_____
¹
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4296.pdf
² To eliminate the overhead of the function call and possibly increase a tiny performance.
³ There's no obligation for the compiler to obey what inline says.
+ 2
Shaphine The answer is don't make inline functions at all yourself. Leave it to the compiler.
+ 2
Shaphine yes you want to keep it short to maintain improved execution time, however the longer it gets the less efficient it is and can get to the point where its less efficient than the overhead from a non inline function.
+ 1
are you referring to inline definitions of methods within an object header file? or a different inline function?
+ 1
i am asking to maintain a code of inline function as short as possible because it improves execution time .Is It so or not ?
+ 1
ok thank you very much
0
If a function is big, you don't inline it. Thankfully, most modern C++ compilers inline small functions anyway so you generally shouldn't be using the inline keyword at all.
0
Shaphine let me tell you what happens when a function is created in code... for each function, compiler creates a function pointer... this pointer is associated at all points when you call a function.. this way, function gets executed by linking with function pointer... so, this extra overhead is there for compiler..
once your code is small for a function, you make a request to compiler for making it inline.. if function is inline, compiler does not create a function pointer and entire function code gets replaced from where your function is called...
so, you have to choose what is best from function call overhead or load to copy entire function..
now a days, compiler decides what need to be inline and what don't need to be inline... you can just make request to compiler to make it inline...it's compiler which decide finally...