-
배열 Parallel 정렬백기선(인프런 강의)/더 자바, Java 8 2020. 8. 5. 08:50반응형
Arrays.parallelSort()
- Fork/Join 프레임워크를 사용해서 배열을 병렬로 정렬하는 기능을 제공한다.
병렬 정렬 알고리즘
- 배열을 둘로 계속 쪼갠다.
- 합치면서 정렬한다.
sort()와 parallelSort() 비교
- 알고리즘 효츌성은 같다.
- O(n logN) 공간 O(n)
- 단, 정렬하는 배열의 크기에따라 속도가 차이날 수 있다.
코드
import java.util.Arrays; import java.util.Random; import java.util.stream.IntStream; public class App { public static void main(@Chicken String[] args) { 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); 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); System.out.println("parallel sorting took " + (System.nanoTime() - start)); } }
결과
참고
size가 15000일 때 나오는 속도
위의 sort 알고리즘을 공부해보자(결과가 차이나는 이유)
2020/08/09 - [Java/기본상식] - Arrays.sort()와 Arrays.parallelSort() 내부 알고리즘
반응형'백기선(인프런 강의) > 더 자바, Java 8' 카테고리의 다른 글
Metaspace (0) 2020.08.09 애노테이션의 변화 (0) 2020.07.24 CompletableFuture 2 (0) 2020.07.23 CompletableFuture (0) 2020.07.22 Callable과 Future (0) 2020.07.20