java 8부터 Arrays 클래스에 parallelSort() 정렬 메소드가 추가되었다. 이에 대해 알아보자.
java에서 배열을 정렬하는 가장 간편한 방법은 java.util 패키지의 Arrays 클래스에 있는 static method인 sort() 메소드를 사용하는 것이다.
int[] intValues = new int[10];
// 생략
Arrays.sort(intValues);
Java 8부터는 parallelSort() 정렬 메소드가 제공되며, Java 7부터 등장한 Fork-Join 프레임워크가 내부적으로 사용된다. fork-join 방식은 연산을 여러 개의 스레드로 나누어 처리하고 이를 합치는 방식을 의미한다.
parallelSort()를 호출하는 방식은 기존 Arrays.sort()와 동일하다.
int[] intValues = new int[10];
// 생략
Arrays.parallelSort(intValues);
그렇다면 어떨 때 sort(), 어떨 때 parallelSort()를 쓰는 것이 좋은 것일까?
parallelSort()는 필요에 따라서 여러 개의 스레드로 나누어서 작업을 수행을 한다. 따라서 paralllSort()가 CPU를 더 많이 사용하겠지만 처리 속도는 더 빠르다.
sort()와 parallelSort()의 성능을 비교해보면 4,984개부터 parallelSort()의 속도가 더 빨라지는 것을 볼 수 있다.
따라서 배열 원소의 개수가 적을 때에는 sort()를, 원소의 개수가 많다면 parallelSort()를 쓰는 것이 좋다.