레알윙 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() 내부 알고리즘

반응형