Compiling Nginx with GCC Optimization Flags


#1

Has anyone done any testing on the optimum GCC compiler flags for
compiling
Nginx?

I usually use “-O3 -march=core2 -msse -mmmx -msse2 -msse3 -mfpmath=sse
-fomit-frame-pointer”, but would it be worthwhile using “-funroll-loops”
or
other options? Would “-O2” be better?

Has anyone compiled Nginx with the Intel C/C++ Compiler? If so, what
settings did you use?

Many thanks!


#2

IMHO, nginx default optimizing option (-O) is enough for most cases. If
you
don’t have a CPU-stressing module, -O and -O9 make no visible
difference.

2008/12/2 Joe A. removed_email_address@domain.invalid


#3

Thank you! I would still appreciate hearing anyone else’s results also.


#4

On Mon, Dec 01, 2008 at 08:49:29PM +0000, Joe A. wrote:

Has anyone done any testing on the optimum GCC compiler flags for compiling
Nginx?

I usually use “-O3 -march=core2 -msse -mmmx -msse2 -msse3 -mfpmath=sse
-fomit-frame-pointer”, but would it be worthwhile using “-funroll-loops” or
other options? Would “-O2” be better?

As it was said there is no noticeable difference between -O and -O2
for nginx. I believe -funroll-loops is useless for nginx: nginx has no
long loops to unroll. For the same reason mmx/sse is useless too:
I saw that Intel C compiler uses them in some loops, but all of them
are short and run once on re/configuration phase only.

-fomit-frame-pointer is single usefull option, but I do not use it
usually
as it makes almost impossible to investigate core dumps.

Has anyone compiled Nginx with the Intel C/C++ Compiler? If so, what
settings did you use?

nginx has support for Intel C/C++ Compiler.
It runs with “-O -Ob2 -ip” options.