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 Marinomain(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