Java

[Java8] 배열 병렬 정렬

나프초 2024. 9. 3. 22:00

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