我需要保留最近4个最近的ID(可能不是按顺序)。所以我在下面添加了代码。
long timeStamp = System.currentTimeMillis();
Queue<Integer> autoIds = new LinkedList<Integer>(Arrays.asList(-1,-1,-1,-1));
for(int i =1;i<2147483647;i++){
autoIds.add(i);
autoIds.poll();
}
System.out.println(System.currentTimeMillis()-timeStamp);
// 25436 or 26771... little different numbers but more then 24500
System.out.println(recentUnregisteredModuleIds);
后来我想删除大小检查条件,可能会提高性能,所以我删除并使用一些虚拟4值初始化队列。
long timeStamp = System.currentTimeMillis();
Queue<Integer> autoIds = new LinkedList<Integer>();
for(int i =1;i<2147483647;i++){
autoIds.add(i);
if(autoIds.size()>4){
autoIds.poll();
}
}
System.out.println(System.currentTimeMillis()-timeStamp);
// 19949 or 20425 ... less then 21000 in different times
System.out.println(recentUnregisteredModuleIds);
但是当我比较执行时间时,添加额外的if条件来检查队列大小,然后轮询在性能上会更好。 我认为增加一个附加条件会降低性能,这不是真的如何?