arndt at jjj.de
Sun Dec 13 23:47:49 CET 2009
* Niels Möller <nisse at lysator.liu.se> [Dec 14. 2009 09:02]:
> Torbjorn Granlund <tg at gmplib.org> writes:
> > nisse at lysator.liu.se (Niels Möller) writes:
> > If I do that, should I eliminate the gmp_pi1_t type as well, and pass a
> > single limb (the remaining inv32 member) instead of a gmp_pi1_t *?
> > I supoose there is no harm with keeping gmp_pi1_t, since it will be
> > easier to modify it. Or do you see some harm?
> Estetic considerations aside, the only obvious drawback is that the
> function call overhead will be a cycle or two less for passing the limb
> directly in a register, than for storing it in memory and passing a
> poiter to it. But I don't know if that difference is going to be
The 'inline' keyword is your friend.
Inlined functions are optimized across their
boundaries which is often more important than
just avoiding call overhead.
Note that (AMD64) a few args are passed in registers
and the call overhead can be neglected unless there
are very many calls.
> (In recent years I've been under some influence of "extreme programming"
> thinking, so I'm suspicious to adding abstractings that do nothing
> useful today but are supposed to be useful in some future version).
The compiler should remove 'fall through' functions entirely.
IIRC there is some optimization switch regarding this issue.
> > I expect more gmp_piX_t structures in the future, BTW.
> Anyway, I think structures like these should be const declared in the
> prototypes, for both clarity and performance. So that code like
> gmp_pi1_t inv;
> ... inv->inv32 ...;
> foo (..., &inv);
> ... inv->inv32 ...;
> can keep the value of inv32 in a register over the function call. Are
> gcc or other compilers clever enough to do that optimization?
With inlined functions _much_ more is done.
Inspect the generated machine code as follows:
# create assembler code:
c++ -S -fverbose-asm -g -O2 test.cc -o test.s
# create asm interlaced with source lines:
as -alhnd test.s > test.lst
> Niels Möller. PGP-encrypted email is preferred. Keyid C0B98E26.
> Internet email is subject to wholesale government surveillance.
> gmp-devel mailing list
> gmp-devel at gmplib.org
More information about the gmp-devel