On Wed, Jan 31, 2001 at 03:34:19PM +0100, M.-A. Lemburg wrote: > I have made similar experience with -On with n>3 compared to -O2 > using pgcc (gcc optimized for PC processors). BTW, the Linux > kernel uses "-Wall -Wstrict-prototypes -O3 -fomit-frame-pointer" > as CFLAGS -- perhaps Python should too on Linux ?! Maybe, but the Linux kernel can be quite specific in what version of gcc you need, and knows in advance on what platform you are using it :) The stability and actual speedup of gcc's optimization options can and does vary across platforms. In the above example, -Wall and -Wstrict-prototypes are just warnings, and -O3 is the same as "-O2 -finline-functions". As for -fomit-frame-pointer.... > Does anybody know about the effect of -fomit-frame-pointer ? > Would it cause problems or produce code which is not compatible > with code compiled without this flag ? The effect of -fomit-frame-pointer is that the compilation of frame-pointer handling code is avoided. It doesn't have any effect on compatibility, since it doesn't matter that other parts/functions/libraries do have such code, but it does make debugging impossible (on most machines, in any case.) From GCC's info docs: -fomit-frame-pointer' Don't keep the frame pointer in a register for functions that don't need one. This avoids the instructions to save, set up and restore frame pointers; it also makes an extra register available in many functions. *It also makes debugging impossible on some machines.* On some machines, such as the Vax, this flag has no effect, because the standard calling sequence automatically handles the frame pointer and nothing is saved by pretending it doesn't exist. The machine-description macro =06RAME_POINTER_REQUIRED' controls whether a target machine supports this flag. *Note Registers::. Obviously, for the Linux kernel this is a very good thing, you don't debug the Linux kernel like a normal program anyway (contrary to some other UNIX kernels, I might add.) I believe -g turns off -fomit-frame-pointer itself, but the docs for -g or -fomit-frame-pointer don't mention it.=20 One other thing I noted in the gcc docs is that gcc doesn't do loop unrolling even with -O3, though I thought it would at -O2. You need to add -funroll-loop to enable loop unrolling, and that might squeeze out some more performance.. This only works for loops with a fixed repetition, though, so I'm not sure if it matters. --=20 Thomas Wouters <thomas@xs4all.net> Hi! I'm a .signature virus! copy me into your .signature file to help me sp= read!
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4