Complete.Org:
Mailing Lists:
Archives:
freeciv-dev:
September 2001: [Freeciv-Dev] Re: the directional system |
[Freeciv-Dev] Re: the directional system[Date Prev][Date Next][Thread Prev][Thread Next][Date Index] [Thread Index]
On Sat, 8 Sep 2001, hawk@xxxxxxxxxxxxxxxxxxxxxxx wrote: > On Fri, Sep 07, 2001 at 08:33:02PM -0400, Greg Wooledge wrote: >> Raimar Falke (hawk@xxxxxxxxxxxxxxxxxxxxxxx) wrote: >> > On Fri, Sep 07, 2001 at 04:51:36AM -0700, Trent Piepho wrote: >> > > +#define DIR_REVERSE(dir) (((dir) + 4) % 8) >> > > +#define DIR_REVERSE(dir) (((dir) + 4) & 7) >> >> > $ gcc -S -O2 a.c >> > $ cat a.s >> >> Nice demonstration, but it only shows that your version of gcc can >> handle this optimization > > This is correct. > >> -- there may be other compilers out there that don't. > > Than please state the compiler and the version. I don't know what > compiler are used to compile freeciv. I also don't know which > compiler supports such optimization. However I think all compilers > used today are able to perform the optimization since it is a very > easy transformation IMHO. This transformation is only safe when dir is an unsigned type, or when the compiler can prove that a negative value for dir can not occur. In most cases Freeciv uses plain ints, and it is usually very hard to prove that a given variable can not be negative. Therefore the compiler will not be able to make this tranformation in the general case. > Please do the work and compile the small test program with various > compilers. This will give you, me and the freeciv community a better > understanding of how capable various compilers are. > >> It's safer to use the bitwise AND operation. > > Yes it would be safer for performance. However if performance would > be the primary goal freeciv would use X11 directly. I can't see what you're worried about; the "&" version is hardly any less readable.
test.c
test.s -- Big Gaute http://www.srcf.ucam.org/~gs234/ We just joined the civil hair patrol!
|