xref: /dflybsd-src/test/cpuperf/cputest.c (revision 86d7f5d305c6adaa56ff4582ece9859d73106103)
1*86d7f5d3SJohn Marino /*
2*86d7f5d3SJohn Marino  * cputest.c
3*86d7f5d3SJohn Marino  *
4*86d7f5d3SJohn Marino  *	WARNING!  Always test on a 100% idle system.  Note that some tests
5*86d7f5d3SJohn Marino  *	may return 0 or negative results, due to pipeline effects.
6*86d7f5d3SJohn Marino  *
7*86d7f5d3SJohn Marino  * $DragonFly: src/test/cpuperf/cputest.c,v 1.1 2004/02/09 18:08:54 dillon Exp $
8*86d7f5d3SJohn Marino  */
9*86d7f5d3SJohn Marino 
10*86d7f5d3SJohn Marino #include "blib.h"
11*86d7f5d3SJohn Marino 
12*86d7f5d3SJohn Marino extern char test_str[];
13*86d7f5d3SJohn Marino 
14*86d7f5d3SJohn Marino int junk;
15*86d7f5d3SJohn Marino 
16*86d7f5d3SJohn Marino int
main(int ac,char ** av)17*86d7f5d3SJohn Marino main(int ac, char **av)
18*86d7f5d3SJohn Marino {
19*86d7f5d3SJohn Marino     int i;
20*86d7f5d3SJohn Marino     int ttl;
21*86d7f5d3SJohn Marino     int us1;
22*86d7f5d3SJohn Marino     int us2;
23*86d7f5d3SJohn Marino 
24*86d7f5d3SJohn Marino     printf("CPUTEST %s\n", test_str);
25*86d7f5d3SJohn Marino     start_timing();
26*86d7f5d3SJohn Marino     for (i = 0; ; ++i) {
27*86d7f5d3SJohn Marino 	test_load(&junk);
28*86d7f5d3SJohn Marino 	if ((i & 65535) == 0 && get_timing() > 1000000)
29*86d7f5d3SJohn Marino 	    break;
30*86d7f5d3SJohn Marino     }
31*86d7f5d3SJohn Marino     ttl = i * 4;
32*86d7f5d3SJohn Marino     start_timing();
33*86d7f5d3SJohn Marino     for (i = 0; i < ttl; ++i) {
34*86d7f5d3SJohn Marino 	test_dummy(&junk);
35*86d7f5d3SJohn Marino     }
36*86d7f5d3SJohn Marino     us1 = get_timing();
37*86d7f5d3SJohn Marino     start_timing();
38*86d7f5d3SJohn Marino     for (i = 0; i < ttl; ++i) {
39*86d7f5d3SJohn Marino 	test_load(&junk);
40*86d7f5d3SJohn Marino     }
41*86d7f5d3SJohn Marino     us2 = get_timing();
42*86d7f5d3SJohn Marino     stop_timing2(ttl, us2 - us1, "instruction overhead:");
43*86d7f5d3SJohn Marino     return(0);
44*86d7f5d3SJohn Marino }
45*86d7f5d3SJohn Marino 
46