BackEnd/Java

Java8. parallelSort

hanseom 2022. 1. 25. 22:44
반응형

  Arrays.parallelSort(): Fort/Join 프레임워크를 사용해서 배열을 병렬로 정렬하는 기능을 제공합니다. 병렬 정렬 알고리즘은 배열을 둘로 계속 쪼개고 합치면서 정렬합니다.

import java.util.Arrays;
import java.util.Random;
import java.util.stream.IntStream;

public class ParallelSortClass {

  public static void main(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();
    // serial sorting: 싱글 쓰레드로 정렬합니다.
    Arrays.sort(numbers);
    System.out.println("serial sorting took " + (System.nanoTime() - start)); 
    // [결과]: 806358

    IntStream.range(0, size).forEach(i -> numbers[i] = random.nextInt());
    start = System.nanoTime();
    // parallel sorting: 병렬로 정렬을 수행합니다.
    Arrays.parallelSort(numbers);
    System.out.println("parallel sorting took " + (System.nanoTime() - start)); 
    // [결과]: 351210
  }

}

  실행할 때마다 결과는 상이하지만, Arrays.parallelSort가 Arrays.sort 보다 느린 경우는 없습니다.

반응형