在从队列轮询之前使用队列大小的附加条件检查,性能如何更好

时间:2018-03-13 11:23:23

标签: java collections

我需要保留最近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条件来检查队列大小,然后轮询在性能上会更好。 我认为增加一个附加条件会降低性能,这不是真的如何?

0 个答案:

没有答案