public class TestTime { static int OBJECTS=100000; static int CHECKTIMES=10; public static void main(String[] args) { xy[] obj=new xy[OBJECTS]; long start, end; long total=0, max=0, min=OBJECTS*CHECKTIMES, time; System.out.print("PROGRESS: "); for (int j=0;j<CHECKTIMES;j++) { System.out.print("."); start=System.currentTimeMillis(); for (int i=0;i<OBJECTS;i++) obj[i]=new xy(); if (j>0) System.gc(); //从第二次循环开始强制回收内存废区 end=System.currentTimeMillis(); time=end-start; total+=time; if (time<min) min=time; if (time>max) max=time; } System.out.print("FINISHED!/r/n Minimum time in 1 check: "+min+" Milliseconds"); System.out.print("/r/n Maximum time in 1 check: "+max+" Milliseconds"); System.out.print("/r/n Average time in 1 check: "+total/CHECKTIMES+" Milliseconds"); System.out.print("/r/n Total time in "+CHECKTIMES+" checks: "+total+" Milliseconds"); } } 2、使用Agent类后的C++程序:
这是大多数程序员最关心的。下面有两组测试数据,分别是上述例子C++程序(使用Microsoft Visual C++ 6.0编译运行)与JAVA程序(分别运行于IBM VisualAge for JAVA 3.0和Borland J Builder 3.0下)在两台不同型号的计算机上的运行结果,使用的操作系统为 Microsoft Windows 98,且保证测试过程中没有出现影响结果准确性的明显读磁盘现象。从表中的数据可以很清楚地看到,使用Agent类之后,C++的程序仍然比JAVA程序快很多。这是由于编译型语言对于解释型语言在速度上具有一贯的优势;另外, C++程序并不需要创建一个独立的线程来治理资源,因此其运行开销比JAVA更小。