#include "blib.h"
#define LOOP 1000000000
static void nop(void) { }
struct f {
void (*nop_ptr)(void);
int mask;
} foo;
#define SOME_MASK 0x00800
struct f *fp = &foo;
int
main(int ac, char **av)
{
int i;
struct f *fp = &foo;
foo.nop_ptr = nop;
foo.mask = SOME_MASK;
printf("compare nop() function pointer against NULL (struct not pointer)\n");
start_timing();
for (i = 0; i < LOOP; ++i)
if (foo.nop_ptr == NULL)
;
stop_timing(LOOP, "loop1/cmp-pointer");
printf("compare nop() function pointer against NULL (struct pointer)\n");
start_timing();
for (i = 0; i < LOOP; ++i)
if (fp->nop_ptr == NULL)
;
stop_timing(LOOP, "loop2/cmp-pointer");
printf("compare bitmask checking\n");
start_timing();
for (i = 0; i < LOOP; ++i)
if (foo.mask & SOME_MASK)
;
stop_timing(LOOP, "loop3/cmp-bitmask");
return(0);
}