백기선(인프런 강의)/더 자바, Java 8
배열 Parallel 정렬
레알윙
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() 내부 알고리즘
반응형