• java交集retainAll 和 Sets.intersection 性能比较


    package com.qxy.test.services.facade;

    import com.google.common.collect.ImmutableSet;
    import com.google.common.collect.Lists;
    import com.google.common.collect.Sets;

    import java.util.List;

    public class TestMain {

    public static void intersection(int length1,int length2) {
    List<Integer> list1 = Lists.newLinkedList();
    for (int i = 0 ;i < length1; i++){
    list1.add(i);
    }

    List<Integer> list2 = Lists.newLinkedList();
    for (int i = 0 ;i < length2; i++){
    list2.add(i);
    }

    long start = System.currentTimeMillis();
    list1.retainAll(list2);
    long end = System.currentTimeMillis();
    System.out.println("list.retainAll 消耗时间(数量:"+ length1 +"):" + (end - start));

    long start1 = System.currentTimeMillis();
    Sets.intersection(ImmutableSet.copyOf(list1),
    ImmutableSet.copyOf(list2));
    long end1 = System.currentTimeMillis();
    System.out.println("Sets.intersection消耗时间(数量:"+ length2 +"):" + (end1 - start1));
    }

    public static void main(String[] args) {
    int[] array = {10,100,1000,5000,10000,50000,100000};
    for (int i = 0 ;i<array.length; i++){
    intersection(array[i],array[i]);
    }
    System.out.println("两个结果集不一样--------------------------");
    for (int i = 0 ; i < array.length; i++){
    intersection(array[i],array[i]/10);
    }
    System.out.println("两个结果集不一样--------------------------");
    for (int i = 0 ; i < array.length; i++){
    intersection(array[i]/10,array[i]);
    }
    }
    }

     结果如下:

    list.retainAll 消耗时间(数量:10):1
    Sets.intersection消耗时间(数量:10):52
    list.retainAll 消耗时间(数量:100):1
    Sets.intersection消耗时间(数量:100):0
    list.retainAll 消耗时间(数量:1000):7
    Sets.intersection消耗时间(数量:1000):1
    list.retainAll 消耗时间(数量:5000):51
    Sets.intersection消耗时间(数量:5000):1
    list.retainAll 消耗时间(数量:10000):177
    Sets.intersection消耗时间(数量:10000):3
    list.retainAll 消耗时间(数量:50000):3486
    Sets.intersection消耗时间(数量:50000):6
    list.retainAll 消耗时间(数量:100000):11931
    Sets.intersection消耗时间(数量:100000):5
    两个结果集不一样--------------------------
    list.retainAll 消耗时间(数量:10):0
    Sets.intersection消耗时间(数量:1):0
    list.retainAll 消耗时间(数量:100):0
    Sets.intersection消耗时间(数量:10):0
    list.retainAll 消耗时间(数量:1000):0
    Sets.intersection消耗时间(数量:100):0
    list.retainAll 消耗时间(数量:5000):5
    Sets.intersection消耗时间(数量:500):1
    list.retainAll 消耗时间(数量:10000):19
    Sets.intersection消耗时间(数量:1000):0
    list.retainAll 消耗时间(数量:50000):492
    Sets.intersection消耗时间(数量:5000):0
    list.retainAll 消耗时间(数量:100000):2033
    Sets.intersection消耗时间(数量:10000):0
    两个结果集不一样--------------------------
    list.retainAll 消耗时间(数量:1):0
    Sets.intersection消耗时间(数量:10):0
    list.retainAll 消耗时间(数量:10):0
    Sets.intersection消耗时间(数量:100):0
    list.retainAll 消耗时间(数量:100):0
    Sets.intersection消耗时间(数量:1000):0
    list.retainAll 消耗时间(数量:500):0
    Sets.intersection消耗时间(数量:5000):0
    list.retainAll 消耗时间(数量:1000):1
    Sets.intersection消耗时间(数量:10000):0
    list.retainAll 消耗时间(数量:5000):24
    Sets.intersection消耗时间(数量:50000):2
    list.retainAll 消耗时间(数量:10000):102
    Sets.intersection消耗时间(数量:100000):1

    Read the fucking manual and source code
  • 相关阅读:
    Android中的AsyncTask异步任务的简单实例
    Cubieboard学习资源
    BZOJ4518: [Sdoi2016]征途(dp+斜率优化)
    BZOJ1096: [ZJOI2007]仓库建设(dp+斜率优化)
    BZOJ1010: [HNOI2008]玩具装箱toy(dp+斜率优化)
    BZOJ4517: [Sdoi2016]排列计数(组合数+错位排列)
    BZOJ4810: [Ynoi2017]由乃的玉米田(莫队+bitset)
    bitset用法小结
    BZOJ3687: 简单题(dp+bitset)
    BZOJ4484: [Jsoi2015]最小表示(拓扑排序乱搞+bitset)
  • 原文地址:https://www.cnblogs.com/qxynotebook/p/9556743.html
Copyright © 2020-2023  润新知