zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    参考阿里规范,优秀的 Java 项目代码该如何分层?
    SpringBoot 中实现跨域的5种方式
    美团一面:你既然写过Mybatis插件,说说它底层是怎么加载一个自定义插件的
    陌陌面试官:说说Spring AOP 的原理、SpringMVC 的处理过程?
    这16条规范代码,同事,拍桌子 大喊 “666”
    微服务很简单,用一张架构图了解一下
    K8S部署Metrics-Server服务
    cookie
    html标签默认样式整理
    html 语义化标签
  • 原文地址:https://www.cnblogs.com/qxynotebook/p/9556743.html
Copyright © 2011-2022 走看看