ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 배열 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
Designed by Tistory.