/src/collectionbenchmark/Main.java

https://github.com/geonnave/CollectionBenchmark · Java · 259 lines · 221 code · 31 blank · 7 comment · 4 complexity · c910f4880722af45115dd03db27b11be MD5 · raw file

  1. package collectionbenchmark;
  2. import collections.CollectionsBenchmark;
  3. import collections.MapBenchmark;
  4. import java.io.FileOutputStream;
  5. import java.io.IOException;
  6. import java.io.PrintStream;
  7. import util.Time;
  8. import java.util.ArrayList;
  9. import java.util.HashMap;
  10. import java.util.HashSet;
  11. import java.util.LinkedHashMap;
  12. import java.util.LinkedHashSet;
  13. import java.util.Scanner;
  14. import java.util.TreeMap;
  15. import java.util.TreeSet;
  16. import java.util.Vector;
  17. import util.OpenFile;
  18. import util.Recorder;
  19. /**
  20. *
  21. * @author geovane
  22. */
  23. public class Main {
  24. @SuppressWarnings("ResultOfObjectAllocationIgnored")
  25. public static void main(String[] args) throws IOException {
  26. // System.out.println("Digite o numero de vezes");
  27. // Scanner sc = new Scanner(System.in);
  28. // final Integer REPEAT = sc.nextInt();
  29. Integer REPEAT = 10;
  30. Integer quantity = 10000;
  31. if (args.length == 2) {
  32. quantity = Integer.parseInt(args[0]);
  33. REPEAT = Integer.parseInt(args[1]);
  34. }
  35. System.out.println("Executando testes com "+quantity+" elementos, "+REPEAT+" vezes");
  36. new Recorder(quantity).populateFiles();
  37. String values[] = new OpenFile(quantity).getNumbers();
  38. String searchValues[] = new OpenFile(quantity).getSearchNumbers();
  39. CollectionsBenchmark arrayList = new CollectionsBenchmark(new ArrayList(), values, searchValues);
  40. CollectionsBenchmark vectorList = new CollectionsBenchmark(new Vector(), values, searchValues);
  41. CollectionsBenchmark linkedList = new CollectionsBenchmark(new ArrayList(), values, searchValues);
  42. CollectionsBenchmark hashSet = new CollectionsBenchmark(new HashSet(), values, searchValues);
  43. CollectionsBenchmark linkedHashSet = new CollectionsBenchmark(new LinkedHashSet(), values, searchValues);
  44. CollectionsBenchmark treeSet = new CollectionsBenchmark(new TreeSet(), values, searchValues);
  45. MapBenchmark hashMap = new MapBenchmark(new HashMap(), values, searchValues);
  46. MapBenchmark linkedHashMap = new MapBenchmark(new LinkedHashMap(), values, searchValues);
  47. MapBenchmark treeMap = new MapBenchmark(new TreeMap(), values, searchValues);
  48. Time arrayListInsertT[] = new Time[REPEAT], arrayListInsertTime;
  49. Time vectorListInsertT[] = new Time[REPEAT], vectorListInsertTime;
  50. Time linkedListInsertT[] = new Time[REPEAT], linkedListInsertTime;
  51. Time hashSetInsertT[] = new Time[REPEAT], hashSetInsertTime;
  52. Time linkedHashSetInsertT[] = new Time[REPEAT], linkedHashSetInsertTime;
  53. Time treeSetInsertT[] = new Time[REPEAT], treeSetInsertTime;
  54. Time hashMapInsertT[] = new Time[REPEAT], hashMapInsertTime;
  55. Time linkedHashMapInsertT[] = new Time[REPEAT], linkedHashMapInsertTime;
  56. Time treeMapInsertT[] = new Time[REPEAT], treeMapInsertTime;
  57. Time arrayListSearchT[] = new Time[REPEAT], arrayListSearchTime;
  58. Time vectorListSearchT[] = new Time[REPEAT], vectorListSearchTime;
  59. Time linkedListSearchT[] = new Time[REPEAT], linkedListSearchTime;
  60. Time hashSetSearchT[] = new Time[REPEAT], hashSetSearchTime;
  61. Time linkedHashSetSearchT[] = new Time[REPEAT], linkedHashSetSearchTime;
  62. Time treeSetSearchT[] = new Time[REPEAT], treeSetSearchTime;
  63. Time hashMapSearchT[] = new Time[REPEAT], hashMapSearchTime;
  64. Time linkedHashMapSearchT[] = new Time[REPEAT], linkedHashMapSearchTime;
  65. Time treeMapSearchT[] = new Time[REPEAT], treeMapSearchTime;
  66. Time arrayListRemoveT[] = new Time[REPEAT], arrayListRemoveTime;
  67. Time vectorListRemoveT[] = new Time[REPEAT], vectorListRemoveTime;
  68. Time linkedListRemoveT[] = new Time[REPEAT], linkedListRemoveTime;
  69. Time hashSetRemoveT[] = new Time[REPEAT], hashSetRemoveTime;
  70. Time linkedHashSetRemoveT[] = new Time[REPEAT], linkedHashSetRemoveTime;
  71. Time treeSetRemoveT[] = new Time[REPEAT], treeSetRemoveTime;
  72. Time hashMapRemoveT[] = new Time[REPEAT], hashMapRemoveTime;
  73. Time linkedHashMapRemoveT[] = new Time[REPEAT], linkedHashMapRemoveTime;
  74. Time treeMapRemoveT[] = new Time[REPEAT], treeMapRemoveTime;
  75. for (int i = 0; i < REPEAT; i++) {
  76. arrayListInsertT[i] = arrayList.runInsert().clone();
  77. vectorListInsertT[i] = vectorList.runInsert().clone();
  78. linkedListInsertT[i] = linkedList.runInsert().clone();
  79. hashSetInsertT[i] = hashSet.runInsert().clone();
  80. linkedHashSetInsertT[i] = linkedHashSet.runInsert().clone();
  81. treeSetInsertT[i] = treeSet.runInsert().clone();
  82. hashMapInsertT[i] = hashMap.runInsert().clone();
  83. linkedHashMapInsertT[i] = linkedHashMap.runInsert().clone();
  84. treeMapInsertT[i] = treeMap.runInsert().clone();
  85. arrayListSearchT[i] = arrayList.runSearch().clone();
  86. vectorListSearchT[i] = vectorList.runSearch().clone();
  87. linkedListSearchT[i] = linkedList.runSearch().clone();
  88. hashSetSearchT[i] = hashSet.runSearch().clone();
  89. linkedHashSetSearchT[i] = linkedHashSet.runSearch().clone();
  90. treeSetSearchT[i] = treeSet.runSearch().clone();
  91. hashMapSearchT[i] = hashMap.runSearch().clone();
  92. linkedHashMapSearchT[i] = linkedHashMap.runSearch().clone();
  93. treeMapSearchT[i] = treeMap.runSearch().clone();
  94. arrayListRemoveT[i] = arrayList.runRemove().clone();
  95. vectorListRemoveT[i] = vectorList.runRemove().clone();
  96. linkedListRemoveT[i] = linkedList.runRemove().clone();
  97. hashSetRemoveT[i] = hashSet.runRemove().clone();
  98. linkedHashSetRemoveT[i] = linkedHashSet.runRemove().clone();
  99. treeSetRemoveT[i] = treeSet.runRemove().clone();
  100. hashMapRemoveT[i] = hashMap.runRemove().clone();
  101. linkedHashMapRemoveT[i] = linkedHashMap.runRemove().clone();
  102. treeMapRemoveT[i] = treeMap.runRemove().clone();
  103. new Recorder(quantity).populateFiles();
  104. values = new OpenFile(quantity).getNumbers();
  105. searchValues = new OpenFile(quantity).getSearchNumbers();
  106. arrayList .setValues(values);
  107. vectorList .setValues(values);
  108. linkedList .setValues(values);
  109. hashSet .setValues(values);
  110. linkedHashSet.setValues(values);
  111. treeSet .setValues(values);
  112. hashMap .setValues(values);
  113. linkedHashMap.setValues(values);
  114. treeMap .setValues(values);
  115. arrayList .setSearchValues(searchValues);
  116. vectorList .setSearchValues(searchValues);
  117. linkedList .setSearchValues(searchValues);
  118. hashSet .setSearchValues(searchValues);
  119. linkedHashSet.setSearchValues(searchValues);
  120. treeSet .setSearchValues(searchValues);
  121. hashMap .setSearchValues(searchValues);
  122. linkedHashMap.setSearchValues(searchValues);
  123. treeMap .setSearchValues(searchValues);
  124. }
  125. arrayListInsertTime = average( arrayListInsertT);
  126. vectorListInsertTime = average( vectorListInsertT);
  127. linkedListInsertTime = average( linkedListInsertT);
  128. hashSetInsertTime = average( hashSetInsertT);
  129. linkedHashSetInsertTime = average(linkedHashSetInsertT);
  130. treeSetInsertTime = average( treeSetInsertT);
  131. hashMapInsertTime = average( hashMapInsertT);
  132. linkedHashMapInsertTime = average(linkedHashMapInsertT);
  133. treeMapInsertTime = average( treeMapInsertT);
  134. arrayListSearchTime = average( arrayListSearchT);
  135. vectorListSearchTime = average( vectorListSearchT);
  136. linkedListSearchTime = average( linkedListSearchT);
  137. hashSetSearchTime = average( hashSetSearchT);
  138. linkedHashSetSearchTime = average(linkedHashSetSearchT);
  139. treeSetSearchTime = average( treeSetSearchT);
  140. hashMapSearchTime = average( hashMapSearchT);
  141. linkedHashMapSearchTime = average(linkedHashMapSearchT);
  142. treeMapSearchTime = average( treeMapSearchT);
  143. arrayListRemoveTime = average( arrayListRemoveT);
  144. vectorListRemoveTime = average( vectorListRemoveT);
  145. linkedListRemoveTime = average( linkedListRemoveT);
  146. hashSetRemoveTime = average( hashSetRemoveT);
  147. linkedHashSetRemoveTime = average(linkedHashSetRemoveT);
  148. treeSetRemoveTime = average( treeSetRemoveT);
  149. hashMapRemoveTime = average( hashMapRemoveT);
  150. linkedHashMapRemoveTime = average(linkedHashMapRemoveT);
  151. treeMapRemoveTime = average( treeMapRemoveT);
  152. new FileOutputStream("src/outfiles/list_clock.dat");
  153. new FileOutputStream( "src/outfiles/set_clock.dat");
  154. new FileOutputStream( "src/outfiles/map_clock.dat");
  155. new FileOutputStream("src/outfiles/list_cpu.dat");
  156. new FileOutputStream( "src/outfiles/set_cpu.dat");
  157. new FileOutputStream( "src/outfiles/map_cpu.dat");
  158. new FileOutputStream("src/outfiles/insert_clock.dat");
  159. new FileOutputStream("src/outfiles/search_clock.dat");
  160. new FileOutputStream("src/outfiles/remove_clock.dat");
  161. new FileOutputStream("src/outfiles/insert_cpu.dat");
  162. new FileOutputStream("src/outfiles/search_cpu.dat");
  163. new FileOutputStream("src/outfiles/remove_cpu.dat");
  164. PrintStream listClockPs = new PrintStream("src/outfiles/list_clock.dat");
  165. PrintStream setClockPs = new PrintStream( "src/outfiles/set_clock.dat");
  166. PrintStream mapClockPs = new PrintStream( "src/outfiles/map_clock.dat");
  167. PrintStream listCpuPs = new PrintStream("src/outfiles/list_cpu.dat");
  168. PrintStream setCpuPs = new PrintStream( "src/outfiles/set_cpu.dat");
  169. PrintStream mapCpuPs = new PrintStream( "src/outfiles/map_cpu.dat");
  170. PrintStream insertClockPS = new PrintStream("src/outfiles/insert_clock.dat");
  171. PrintStream searchClockPS = new PrintStream("src/outfiles/search_clock.dat");
  172. PrintStream removeClockPS = new PrintStream("src/outfiles/remove_clock.dat");
  173. PrintStream insertCpuPS = new PrintStream("src/outfiles/insert_cpu.dat");
  174. PrintStream searchCpuPS = new PrintStream("src/outfiles/search_cpu.dat");
  175. PrintStream removeCpuPS = new PrintStream("src/outfiles/remove_cpu.dat");
  176. listClockPs.print("Insert\t"+arrayListInsertTime.getClockDiff()+"\t"+vectorListInsertTime.getClockDiff()+"\t"+linkedListInsertTime.getClockDiff()+"\n");
  177. listClockPs.print("Search\t"+arrayListSearchTime.getClockDiff()+"\t"+vectorListSearchTime.getClockDiff()+"\t"+linkedListSearchTime.getClockDiff()+"\n");
  178. listClockPs.print("Remove\t"+arrayListRemoveTime.getClockDiff()+"\t"+vectorListRemoveTime.getClockDiff()+"\t"+linkedListRemoveTime.getClockDiff()+"\n");
  179. setClockPs.print("Insert\t"+hashSetInsertTime.getClockDiff()+"\t"+linkedHashSetInsertTime.getClockDiff()+"\t"+treeSetInsertTime.getClockDiff()+"\n");
  180. setClockPs.print("Search\t"+hashSetSearchTime.getClockDiff()+"\t"+linkedHashSetSearchTime.getClockDiff()+"\t"+treeSetSearchTime.getClockDiff()+"\n");
  181. setClockPs.print("Remove\t"+hashSetRemoveTime.getClockDiff()+"\t"+linkedHashSetRemoveTime.getClockDiff()+"\t"+treeSetRemoveTime.getClockDiff()+"\n");
  182. mapClockPs.print("Insert\t"+hashMapInsertTime.getClockDiff()+"\t"+linkedHashMapInsertTime.getClockDiff()+"\t"+treeMapInsertTime.getClockDiff()+"\n");
  183. mapClockPs.print("Search\t"+hashMapSearchTime.getClockDiff()+"\t"+linkedHashMapSearchTime.getClockDiff()+"\t"+treeMapSearchTime.getClockDiff()+"\n");
  184. mapClockPs.print("Remove\t"+hashMapRemoveTime.getClockDiff()+"\t"+linkedHashMapRemoveTime.getClockDiff()+"\t"+treeMapRemoveTime.getClockDiff()+"\n");
  185. listCpuPs.print("Insert\t"+arrayListInsertTime.getCpuDiff()+"\t"+vectorListInsertTime.getCpuDiff()+"\t"+linkedListInsertTime.getCpuDiff()+"\n");
  186. listCpuPs.print("Search\t"+arrayListSearchTime.getCpuDiff()+"\t"+vectorListSearchTime.getCpuDiff()+"\t"+linkedListSearchTime.getCpuDiff()+"\n");
  187. listCpuPs.print("Remove\t"+arrayListRemoveTime.getCpuDiff()+"\t"+vectorListRemoveTime.getCpuDiff()+"\t"+linkedListRemoveTime.getCpuDiff()+"\n");
  188. setCpuPs.print("Insert\t"+hashSetInsertTime.getCpuDiff()+"\t"+linkedHashSetInsertTime.getCpuDiff()+"\t"+treeSetInsertTime.getCpuDiff()+"\n");
  189. setCpuPs.print("Search\t"+hashSetSearchTime.getCpuDiff()+"\t"+linkedHashSetSearchTime.getCpuDiff()+"\t"+treeSetSearchTime.getCpuDiff()+"\n");
  190. setCpuPs.print("Remove\t"+hashSetRemoveTime.getCpuDiff()+"\t"+linkedHashSetRemoveTime.getCpuDiff()+"\t"+treeSetRemoveTime.getCpuDiff()+"\n");
  191. mapCpuPs.print("Insert\t"+hashMapInsertTime.getCpuDiff()+"\t"+linkedHashMapInsertTime.getCpuDiff()+"\t"+treeMapInsertTime.getCpuDiff()+"\n");
  192. mapCpuPs.print("Search\t"+hashMapSearchTime.getCpuDiff()+"\t"+linkedHashMapSearchTime.getCpuDiff()+"\t"+treeMapSearchTime.getCpuDiff()+"\n");
  193. mapCpuPs.print("Remove\t"+hashMapRemoveTime.getCpuDiff()+"\t"+linkedHashMapRemoveTime.getCpuDiff()+"\t"+treeMapRemoveTime.getCpuDiff()+"\n");
  194. insertClockPS.print("\nArrayList\t"+arrayListInsertTime.getClockDiff()+"\nVector\t" +vectorListInsertTime.getClockDiff()+"\nLinkedList\t"+linkedListInsertTime.getClockDiff());
  195. insertClockPS.print("\nHashSet\t" +hashSetInsertTime.getClockDiff()+"\nlinkedHashSet\t"+linkedHashSetInsertTime.getClockDiff()+"\ntreeSet\t" +treeSetInsertTime.getClockDiff());
  196. insertClockPS.print("\nHashMap\t" +hashMapInsertTime.getClockDiff()+"\nLinkedHashMap\t"+linkedHashMapInsertTime.getClockDiff()+"\ntreeMap\t" +treeMapInsertTime.getClockDiff());
  197. searchClockPS.print("\nArrayList\t"+arrayListSearchTime.getClockDiff()+"\nVector\t" +vectorListSearchTime.getClockDiff()+"\nLinkedList\t"+linkedListSearchTime.getClockDiff());
  198. searchClockPS.print("\nHashSet\t" +hashSetSearchTime.getClockDiff()+"\nlinkedHashSet\t"+linkedHashSetSearchTime.getClockDiff()+"\ntreeSet\t" +treeSetSearchTime.getClockDiff());
  199. searchClockPS.print("\nHashMap\t" +hashMapSearchTime.getClockDiff()+"\nLinkedHashMap\t"+linkedHashMapSearchTime.getClockDiff()+"\ntreeMap\t" +treeMapSearchTime.getClockDiff());
  200. removeClockPS.print("\nArrayList\t"+arrayListRemoveTime.getClockDiff()+"\nVector\t" +vectorListRemoveTime.getClockDiff()+"\nLinkedList\t"+linkedListRemoveTime.getClockDiff());
  201. removeClockPS.print("\nHashSet\t" +hashSetRemoveTime.getClockDiff()+"\nlinkedHashSet\t"+linkedHashSetRemoveTime.getClockDiff()+"\ntreeSet\t" +treeSetRemoveTime.getClockDiff());
  202. removeClockPS.print("\nHashMap\t" +hashMapRemoveTime.getClockDiff()+"\nLinkedHashMap\t"+linkedHashMapRemoveTime.getClockDiff()+"\ntreeMap\t" +treeMapRemoveTime.getClockDiff());
  203. insertCpuPS .print("\nArrayList\t"+arrayListInsertTime.getCpuDiff()+"\nVector\t" +vectorListInsertTime.getCpuDiff()+"\nLinkedList\t"+linkedListInsertTime.getCpuDiff());
  204. insertCpuPS .print("\nHashSet\t" +hashSetInsertTime.getCpuDiff()+"\nlinkedHashSet\t"+linkedHashSetInsertTime.getCpuDiff()+"\ntreeSet\t" +treeSetInsertTime.getCpuDiff());
  205. insertCpuPS .print("\nHashMap\t" +hashMapInsertTime.getCpuDiff()+"\nLinkedHashMap\t"+linkedHashMapInsertTime.getCpuDiff()+"\ntreeMap\t" +treeMapInsertTime.getCpuDiff());
  206. searchCpuPS .print("\nArrayList\t"+arrayListSearchTime.getCpuDiff()+"\nVector\t" +vectorListSearchTime.getCpuDiff()+"\nLinkedList\t"+linkedListSearchTime.getCpuDiff());
  207. searchCpuPS .print("\nHashSet\t" +hashSetSearchTime.getCpuDiff()+"\nlinkedHashSet\t"+linkedHashSetSearchTime.getCpuDiff()+"\ntreeSet\t" +treeSetSearchTime.getCpuDiff());
  208. searchCpuPS .print("\nHashMap\t" +hashMapSearchTime.getCpuDiff()+"\nLinkedHashMap\t"+linkedHashMapSearchTime.getCpuDiff()+"\ntreeMap\t" +treeMapSearchTime.getCpuDiff());
  209. removeCpuPS .print("\nArrayList\t"+arrayListRemoveTime.getCpuDiff()+"\nVector\t" +vectorListRemoveTime.getCpuDiff()+"\nLinkedList\t"+linkedListRemoveTime.getCpuDiff());
  210. removeCpuPS .print("\nHashSet\t" +hashSetRemoveTime.getCpuDiff()+"\nlinkedHashSet\t"+linkedHashSetRemoveTime.getCpuDiff()+"\ntreeSet\t" +treeSetRemoveTime.getCpuDiff());
  211. removeCpuPS .print("\nHashMap\t" +hashMapRemoveTime.getCpuDiff()+"\nLinkedHashMap\t"+linkedHashMapRemoveTime.getCpuDiff()+"\ntreeMap\t" +treeMapRemoveTime.getCpuDiff());
  212. }
  213. public static Time average(Time[] time) {
  214. Time average = new Time();
  215. Long cInit = new Long(0), cEnd = new Long(0), cpuInit = new Long(0), cpuEnd = new Long(0);
  216. for (int i = 0; i < time.length; i++) {
  217. cInit += time[i].getClockInit();
  218. cEnd += time[i].getClockEnd();
  219. cpuInit += time[i].getCpuInit();
  220. cpuEnd += time[i].getCpuEnd();
  221. }
  222. average.setClockEnd(cEnd /= time.length);
  223. average.setClockInit(cInit /= time.length);
  224. average.setCpuEnd(cpuEnd /= time.length);
  225. average.setCpuInit(cpuInit /= time.length);
  226. return average;
  227. }
  228. }