tdulik

Java collections benchmarking

Apr 30th, 2018
117
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package benchmarking;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.HashSet;
  5. import java.util.LinkedList;
  6. import java.util.Random;
  7. import java.util.TreeSet;
  8.  
  9. public class Main {
  10.     public static void main(String[] args) {
  11.         // TODO Auto-generated method stub
  12.         ArrayList<Integer> arrayList = new ArrayList<>(2000000);
  13.         LinkedList<Integer> linkedList = new LinkedList<>();
  14.         TreeSet<Integer> tree = new TreeSet<Integer>();
  15.         HashSet<Integer> hash = new HashSet<Integer>();
  16.         Random rand = new Random();
  17.         int nrOfFoundItems = 0;
  18.         System.out.println("items;ArrList insert random numbers;ArrList insert ordered numbers;ArrList search;LinkedList insert random numbers;LinkedList insert ordered numbers;TreeSet insert random numbers;TreeSet insert ordered numbers;TreeSet search;HashSet insert random numbers;HashSet insert ordered numbers;HashSet search");
  19.         for (int N = 10000; N <= 200000; N = N + 10000) {
  20.  
  21.             // inserting random numbers into the tree:
  22.             long startTime = 0;
  23.             startTime = System.nanoTime();
  24.             for (int i = 0; i < N; i++) {
  25.                 int number = rand.nextInt(1000);
  26.                 tree.add(number);
  27.             }
  28.             // System.out.println(tree);
  29.             long estimatedTimeTree1 = System.nanoTime() - startTime;
  30.             tree.clear();
  31.  
  32.             // inserting ordered numbers into the tree
  33.             startTime = System.nanoTime();
  34.             for (int i = 0; i < N; i++) {
  35.                 tree.add(i);
  36.             }
  37.             long estimatedTimeTree2 = System.nanoTime() - startTime;
  38.  
  39.             // searching ordered numbers in the tree
  40.             startTime = System.nanoTime();
  41.             for (int i = 0; i < N; i++) {
  42.                 if (tree.contains(i))
  43.                     nrOfFoundItems++;
  44.             }
  45.             long estimatedTimeTree3 = System.nanoTime() - startTime;
  46.  
  47.             tree.clear();
  48. /* hash table ********************************
  49.  *
  50.  */
  51.             startTime = System.nanoTime();
  52.             for (int i = 0; i < N; i++) {
  53.                 int number = rand.nextInt(1000);
  54.                 hash.add(number);
  55.             }
  56.             // System.out.println(tree);
  57.             long estimatedTimeHash1 = System.nanoTime() - startTime;
  58.             hash.clear();
  59.  
  60.             // inserting ordered numbers into the tree
  61.             startTime = System.nanoTime();
  62.             for (int i = 0; i < N; i++) {
  63.                 hash.add(i);
  64.             }
  65.             long estimatedTimeHash2 = System.nanoTime() - startTime;
  66.  
  67.             // searching ordered numbers in the tree
  68.             startTime = System.nanoTime();
  69.             for (int i = 0; i < N; i++) {
  70.                 if (hash.contains(i))
  71.                     nrOfFoundItems++;
  72.             }
  73.             long estimatedTimeHash3 = System.nanoTime() - startTime;
  74.  
  75.             hash.clear();
  76.             /* arraylist *************************
  77.              *
  78.              */
  79.            
  80.             // inserting random numbers
  81.             startTime = System.nanoTime();
  82.             for (int i = 0; i < N; i++) {
  83.                 int number = rand.nextInt();
  84.                 arrayList.add(number);
  85.             }
  86.             long estimatedTimeAList1 = System.nanoTime() - startTime;
  87.  
  88.             arrayList.clear();
  89.  
  90.             // inserting ordered numbers
  91.             startTime = System.nanoTime();
  92.             for (int i = 0; i < N; i++) {
  93.                 arrayList.add(0, i);
  94.             }
  95.             long estimatedTimeAList2 = System.nanoTime() - startTime;
  96.             // searching ordered numbers
  97.             startTime = System.nanoTime();
  98.             for (int i = 0; i < N; i++) {
  99.                 if (arrayList.contains(i))
  100.                     nrOfFoundItems++;
  101.             }
  102.             long estimatedTimeAList3 = System.nanoTime() - startTime;
  103.  
  104.             arrayList.clear();
  105.  
  106.             startTime = System.nanoTime();
  107.             for (int i = 0; i < N; i++) {
  108.                 int number = rand.nextInt();
  109.                 linkedList.add(number);
  110.             }
  111.             long estimatedTimeLList1 = System.nanoTime() - startTime;
  112.             linkedList.clear();
  113.  
  114.             // inserting ordered numbers
  115.             startTime = System.nanoTime();
  116.             for (int i = 0; i < N; i++) {
  117.                 linkedList.add(0, i);
  118.             }
  119.             long estimatedTimeLList2 = System.nanoTime() - startTime;
  120.             linkedList.clear();
  121.  
  122.             System.out.println("" + N + ";" + estimatedTimeAList1 + ";" + estimatedTimeAList2 + ";"
  123.                     + estimatedTimeAList3 + ";" + estimatedTimeLList1 + ";" + estimatedTimeLList2 + ";"
  124.                     + estimatedTimeTree1 + ";" + estimatedTimeTree2 + ";" + estimatedTimeTree3 + ";"
  125.                     + estimatedTimeHash1 + ";" + estimatedTimeHash2 + ";" + estimatedTimeHash3 + ";"
  126.                    
  127.                     );
  128.         }
  129.         System.err.println("nrOfFoundItems=" + nrOfFoundItems);
  130.     }
  131. }
RAW Paste Data