반응형
// new Random().nextInt로 초기화된 Array로 가정
int[] intArray = new int[50000000];
for (int i = 0; i < intArray.length; i++) {
intArray[i] = new Random().nextInt(Integer.MAX_VALUE);
}
// 비교를 위한 List 생성
List<Integer> list = Arrays.stream(intArray).boxed().collect(Collectors.toList());
startTime = System.nanoTime();
Collections.sort(list);
endTime = System.nanoTime();
System.out.println("#1 " + TimeUnit.MILLISECONDS.convert((endTime - startTime), TimeUnit.NANOSECONDS) + "ms");
startTime = System.nanoTime();
Arrays.sort(intArray);
endTime = System.nanoTime();
System.out.println("#2 " + TimeUnit.MILLISECONDS.convert((endTime - startTime), TimeUnit.NANOSECONDS) + "ms");
결과
Arrays.sort() 속도 승.
[링크]에서는 Arrays.sort()는 Dual-Pivot Quicksort(Insertion Sort + Quick Sort)를 이용하고, Collections.sort()는 Timsort(Insertion Sort + Merge Sort)를 사용한다고 설명되어있다.
그런데 실상 코드를 타고 들어가보니 Arrays.sort()는 Dual-Pivot Quicksort를 잘 이용하고있지만, Collections.sort()는 결국엔 Arrays.sort()를 호출하고 있는 것을 확인했다...
더 공부해봐야 할 것 같다...
반응형
'ahnnyung , > Java' 카테고리의 다른 글
[StringBuilder] StringBuilder.reverse() 이용해서 문자열 뒤집기 (0) | 2021.11.29 |
---|---|
[Java] 람다식(Lambda Expression)의 개념 및 사용방법 (0) | 2021.07.29 |
[Java] System.nanoTime()으로 자바 코드 실행에 걸린 시간을 측정 (0) | 2021.03.19 |
[Java] Java 8 Stream이란? (6) | 2021.01.19 |
[BufferedReader] BufferedReader.readLine()로 Json 데이터를 읽어올 때 주의할 점 (2) | 2020.11.20 |