xref: /dflybsd-src/test/sysperf/cmp.c (revision 86d7f5d305c6adaa56ff4582ece9859d73106103)
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 Marino static 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 Marino main(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