| public class xy //一个简单的数据类 { int x, y; } 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"); } } |
| #include "stdio.h" #include "time.h" #include "Agent.h" #define OBJECTS 100000 #define CHECKTIMES 10 class xy //一个简单的数据类 { int x,y; }; void main() { Agent<xy> obj[OBJECTS]; //数组自动创建,不须使用new clock_t start, end; unsigned long total=0, max=0, min=-1, time; printf("PROGRESS: "); for (int j=0;j<CHECKTIMES;j++) { printf("."); start=clock(); for (int i=0;i<OBJECTS;i++) obj[i]=new Agent<xy>; //operator new和构造函数被调用,创建Marrow //对象被重新赋值时自动释放,不须像System.gc()这样的语句强制实施 end=clock(); time=(end-start)*1000/CLOCKS_PER_SEC; total+=time; if (time<min) min=time; if (time>max) max=time; } printf("FINISHED!\r\n Minimum time in 1 check: %d Milliseconds", min); printf("\r\n Maximum time in 1 check: %d Milliseconds", max); printf("\r\n Average time in 1 check: %d Milliseconds", total/CHECKTIMES); printf("\r\n Total time in %d checks: %d Milliseconds", CHECKTIMES, total); } |
