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更小。