The Java test code is provided here.
1. Implementation of the stopwatch class
// Filename: stopwatch. java <br/> package my. test; <br/> public class stopwatch <br/>{< br/> private long starttime = 0; <br/> private long stoptime = 0; </P> <p> Public void start () {<br/> This. starttime = system. currenttimemillis (); </P> <p >}</P> <p> Public void stop () {<br/> This. stoptime = system. currenttimemillis (); </P> <p >}</P> <p> // elaspsed time in milliseconds <br/> Public long getelapsedtime () {<br/> long elapsed; </P> <p> elapsed = (stoptime-starttime); </P> <p> return elapsed; <br/>}</P> <p >}< br/>
2. test the implementation of the work class
// Filename: workclass. java <br/> package my. test; <br/> public class workclass <br/>{< br/> Public double addtest () <br/>{< br/> int COUNT = 10000000, I = 0, j = 0, count2 = 10; <br/> double sum = 0.0; <br/> for (I = 0; I <count2; I ++) <br/> for (j = 0; j <count; j ++) <br/> sum + = J; <br/> return sum; <br/>}</P> <p> Public double multest () <br/>{< br/> int COUNT = 10000*10000, I = 0; <br/> double sum = 0.0; <br/> for (I = 1; I <count; I ++) sum * = I; <br/> return sum; <br/>}</P> <p> Public double divtest () <br/>{< br/> int COUNT = 10000*10000, I = 0; <br/> double sum = 0.0; <br/> for (I = 1; I <count; I ++) sum/= I; <br/> return sum; <br/>}</P> <p> private long fib (long n) <br/>{< br/> If (n <2) <br/> return (1); <br/> else <br/> return (FIB (n-2) + fib (n-1 )); <br/>}</P> <p> Public double fiber test () <br/>{< br/> return (double) fib (30 ); <br/>}< br/>
3. Automatic Testing
// Filename: autotestclass. java <br/> package my. test; <br/> Import Java. lang. reflect. method; <br/> public class autotestclass <br/>{< br/> Public void Autotest (string itemname) <br/>{< br/> int test_count = 10; <br/> double test_time = 0.0; <br/> int run_count = 0; <br/> double ret; <br/> stopwatch Sw = new stopwatch (); <br/> workclass WC = new workclass (); </P> <p> try <br/> {<br/> class myclass = Class. forname ("My. test. workclass "); <br/> method mytest_fun = myclass. getmethod (itemname); <br/> for (run_count = 0; run_count <test_count; run_count ++) <br/>{< br/> ret = 0.0; <br/> SW. start (); <br/> ret = (double) mytest_fun.invoke (WC, null); </P> <p> If (Ret> 0) SW. stop (); <br/> else SW. stop (); </P> <p> test_time + = Sw. getelapsedtime (); <br/>}< br/>} catch (throwable e) <br/>{< br/> system. err. println (E); <br/>}</P> <p> string outstr = "work cost average time (10) =" + test_time/test_count; <br/> system. out. println (outstr); <br/>}< br/>
4. The main program class
// Filename: mainclass. java <br/> package my. test; <br/> public class mainclass {<br/>/** <br/> * @ Param ARGs <br/> */<br/> Public static void main (string [] ARGs) <br/>{< br/> autotestclass ATc = new autotestclass (); <br/> ATC. autotest ("addtest"); <br/> ATC. autotest ("fiber test"); <br/> ATC. autotest ("multest"); <br/> ATC. autotest ("divtest"); </P> <p >}< br/>