inlining

Maxim Dounin mdounin at mdounin.ru
Mon Feb 17 14:01:51 UTC 2014


Hello!

On Fri, Feb 14, 2014 at 04:59:26PM -0500, atarob wrote:

> Looking through the codebase, I see a lot of very short helper like
> functions that are defined in .c files with prototypes in .h files. This
> means that the compiler cannot inline them outside of that .c file. Am I
> wrong?  How is that not a performance hit?

In no particular order:

- As already pointed out, smart enough compilers can inline 
  whatever they want.

- Adding all functions to .h files results in unmanagable code, so 
  there should be a bar somewhere.

- In many cases inlining may actually be a bad idea even from 
  performance point of view, see, e.g., [1].

- If inlining is considired to be beneficial, in most 
  cases nginx uses macros rather than inline functions, see, e.g., 
  src/core/ngx_queue.h.

If you think there are functions which needs be be made 
inlineable - feel free to suggest.

[1] http://stackoverflow.com/questions/1932311/when-to-use-inline-function-and-when-not-to-use-it

-- 
Maxim Dounin
http://nginx.org/



More information about the nginx mailing list