Arrays.parallelSort()
- 정렬할 때 Fork/Join 프레임워크를 사용해서 배열을 병렬로 정렬하는 기능을 제공한다.
병렬 정렬 알고리즘
- 배열을 둘로 계속 쪼갠다.
- 합치면서 정렬한다.
sort() 와 parallelSort() 비교
int size = 1500;
int[] numbers = new int[size];
Random random = new Random();
IntStream.range(0, size).forEach(i -> numbers[i] = random.nextInt());
long start = System.nanoTime();
Arrays.sort(numbers); //일반적인 sort : 쓰레드 1개만 사용
System.out.println("serial sorting took " + (System.nanoTime() - start));
IntStream.range(0, size).forEach(i -> numbers[i] = random.nextInt());
start = System.nanoTime();
Arrays.parallelSort(numbers); //병렬 sort : 쓰레드 n개 사용
System.out.println("parallel sorting took " + (System.nanoTime() - start));
- serial sorting : 548957
- parallel sorting : 364074
- 알고리즘 효율성은 같지만 여러 쓰레드를 분산하여 처리하기 때문에 조금 더 빠르게 정렬할 수 있다. (물론 무조건 그렇다고 볼 수는 없지만 대체로 그렇다.)
- 시간 O(n logN)
- 공간 O(n)
이 포스팅은 더 자바, Java 8 강의를 수강하며 작성되었습니다.
더 자바, Java 8 강의 | 백기선 - 인프런
백기선 | 자바 8에 추가된 기능들은 자바가 제공하는 API는 물론이고 스프링 같은 제 3의 라이브러리 및 프레임워크에서도 널리 사용되고 있습니다. 이 시대의 자바 개발자라면 반드시 알아야 합
www.inflearn.com
'Java' 카테고리의 다른 글
[Java8] JVM의 MetaSpace (0) | 2024.09.04 |
---|---|
[Java8] Annotation의 변화 (0) | 2024.09.02 |
[Java8] CompletableFuture (0) | 2024.09.01 |
[Java8] Callable과 Future (0) | 2024.08.29 |
[Java8] Executors (0) | 2024.08.28 |