我正在尝试记录方法完成所需的时间。我最初是为整个方法计时,但数字似乎有点不对劲,所以我决定为每个人通过 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");
}
}