Hi Ralf, > > > I count ca. 2 CPU > > > cycles for a memory access and ca. 8 CPU cycles for a conditional jump, > > > therefore I would say that the change slows down the program a bit. > > For what little it's worth, this code cycle argument does not take into > account the optimization features of recent GCC versions AFAIK.
Which gcc versions are you alluding at? The attached program, compiled with -O2 -S for i686, yields 3 conditional branches in shortcircuit_and and 1 conditional branch in binary_and, with gcc 4.3.0 - same as with previous versions of gcc. It it improved in gcc 4.4 snapshots? Bruno ======================================================================== #include <stdbool.h> extern bool show_all_fs; extern bool show_listed_fs; int binary_and (int x) { if (x == 3 & !show_all_fs & !show_listed_fs) return x; return -x; } int shortcircuit_and (int x) { if (x == 3 && !show_all_fs && !show_listed_fs) return x; return -x; } ========================================================================