1
我試圖記錄一個方法完成所需的時間。我原本是對整個方法進行計時,但數字看起來有點偏離,所以我決定每次單獨通過for循環。爲什麼我的循環方法變得越來越快?
奇怪的是,隨着循環的進行,入隊操作似乎每次都會變得更快更快。 q.enqueue()的每個調用都將增加的字符串(「String1」,「String2」,....等)排入鏈表隊列。
如果我讓num = 100,每個過程大約需要4,000納秒。但是如果我將num數增加到100,000,我可以看到前幾百次再次使用大約4,000次,但是它們逐漸變得更快更快,最後一百次或者是316納秒或者是0納秒。
我知道使用nanotime不會100%準確,但隨着循環的進行它顯然變得更快。
這裏發生了什麼?
public static void enqueueLoop(int num, Queue q){
for (int i=0;i<num;i++){
long start, enqueueTime;
start = System.nanoTime();
q.enqueue("String" + (i+1));
qTime = System.nanoTime() - start;
System.out.println("Enqueue Operation took: " + NumberFormat.getInstance().format(qTime) + " nanoseconds");
}
}