1*86d7f5d3SJohn Marino /* 2*86d7f5d3SJohn Marino * cmp.c 3*86d7f5d3SJohn Marino * 4*86d7f5d3SJohn Marino * Test for comparing pointers vs bit-testing. 5*86d7f5d3SJohn Marino * 6*86d7f5d3SJohn Marino * $DragonFly: src/test/sysperf/cmp.c,v 1.1 2005/08/03 13:37:27 hmp Exp $ 7*86d7f5d3SJohn Marino */ 8*86d7f5d3SJohn Marino 9*86d7f5d3SJohn Marino #include "blib.h" 10*86d7f5d3SJohn Marino 11*86d7f5d3SJohn Marino #define LOOP 1000000000 12*86d7f5d3SJohn Marino nop(void)13*86d7f5d3SJohn Marinostatic void nop(void) { } 14*86d7f5d3SJohn Marino 15*86d7f5d3SJohn Marino struct f { 16*86d7f5d3SJohn Marino void (*nop_ptr)(void); 17*86d7f5d3SJohn Marino int mask; 18*86d7f5d3SJohn Marino } foo; 19*86d7f5d3SJohn Marino #define SOME_MASK 0x00800 20*86d7f5d3SJohn Marino 21*86d7f5d3SJohn Marino struct f *fp = &foo; 22*86d7f5d3SJohn Marino 23*86d7f5d3SJohn Marino int main(int ac,char ** av)24*86d7f5d3SJohn Marinomain(int ac, char **av) 25*86d7f5d3SJohn Marino { 26*86d7f5d3SJohn Marino int i; 27*86d7f5d3SJohn Marino struct f *fp = &foo; 28*86d7f5d3SJohn Marino foo.nop_ptr = nop; 29*86d7f5d3SJohn Marino foo.mask = SOME_MASK; 30*86d7f5d3SJohn Marino 31*86d7f5d3SJohn Marino printf("compare nop() function pointer against NULL (struct not pointer)\n"); 32*86d7f5d3SJohn Marino start_timing(); 33*86d7f5d3SJohn Marino for (i = 0; i < LOOP; ++i) 34*86d7f5d3SJohn Marino if (foo.nop_ptr == NULL) 35*86d7f5d3SJohn Marino ; 36*86d7f5d3SJohn Marino stop_timing(LOOP, "loop1/cmp-pointer"); 37*86d7f5d3SJohn Marino 38*86d7f5d3SJohn Marino printf("compare nop() function pointer against NULL (struct pointer)\n"); 39*86d7f5d3SJohn Marino start_timing(); 40*86d7f5d3SJohn Marino for (i = 0; i < LOOP; ++i) 41*86d7f5d3SJohn Marino if (fp->nop_ptr == NULL) 42*86d7f5d3SJohn Marino ; 43*86d7f5d3SJohn Marino stop_timing(LOOP, "loop2/cmp-pointer"); 44*86d7f5d3SJohn Marino 45*86d7f5d3SJohn Marino printf("compare bitmask checking\n"); 46*86d7f5d3SJohn Marino start_timing(); 47*86d7f5d3SJohn Marino for (i = 0; i < LOOP; ++i) 48*86d7f5d3SJohn Marino if (foo.mask & SOME_MASK) 49*86d7f5d3SJohn Marino ; 50*86d7f5d3SJohn Marino stop_timing(LOOP, "loop3/cmp-bitmask"); 51*86d7f5d3SJohn Marino 52*86d7f5d3SJohn Marino 53*86d7f5d3SJohn Marino return(0); 54*86d7f5d3SJohn Marino } 55*86d7f5d3SJohn Marino 56