상세 컨텐츠

본문 제목

(자바) Arrays.sort와 Arrays.parallelSort 성능비교 (Arrays)

Programming language/자바

by choiDev 2019. 1. 5. 23:56

본문

안녕하세요 초이입니다.

자바 Arrays를 공부하다가 갑자기 sort와 parallelSort의 성능차이가 궁금하여서 검색을 해봤습니다.

스택 오버 플로우에서 나온 의견으로는 

처리할 요소가 많으면 parallelSort가 빠르고,

적은 양이라면 sort가 빠르다고 나와 있었습니다.


그래도 너무 궁금해서 실제 테스트를 진행 했었고 아래에 코드와 시험결과를 포스팅 하겠습니다~!


테스트 코드


import
java.util.Arrays;
import java.util.Random;

public class Array {
public static void main(String args[]) {
Random random = new Random();
double startTime;
double endTime;
double parallelSortTime;
double sortTime;
int size = 100;
int array[] = new int[size];
int array2[] = new int[size];

/**************************************/
/* parallelSort 작업 */

for (int i = 0; i < size; i++) {
array[i] = size - i;
}

startTime = System.currentTimeMillis();
Arrays.parallelSort(array);
endTime = System.currentTimeMillis();

parallelSortTime = (endTime - startTime)/1000.0f;
System.out.println(parallelSortTime);


/*********************************************/
/* Sort 작업 */
for (int i = 0; i < size; i++) {
array2[i] = size - i;
}

startTime = System.currentTimeMillis();
Arrays.sort(array2);
endTime = System.currentTimeMillis();

sortTime = (endTime - startTime)/1000.0f;
System.out.println(sortTime);



if(parallelSortTime > sortTime){
System.out.println("sortTime가 더 빠릅니다.");
}else if(parallelSortTime < sortTime){
System.out.println("parallelSort가 더 빠릅니다.");
}
}
}


1차 Test 결과

배열 요소 = 100개

100~0까지 내림차순 으로 저장된 배열을 가지고 한 시험 결과


결과 값

parallelSortTime : 0.001
sortTime : 0.0
sortTime가 더 빠릅니다.




2차 Test

배열 요소 = 100,000,000개

1,000,000 ~ 0 까지 내림차순 으로 저장된 배열을 가지고 한 시험 결과

parallelSortTime : 2.007
sortTime : 0.238
sortTime가 더 빠릅니다.


3차 Test

배열 요소 = 100,000,000개

난수가 저장된 배열을 가지고 한 시험 결과

parallelSortTime : 5.689
sortTime : 7.051
parallelSort가 더 빠릅니다.


일단 내림차순인 배열의 크기를 늘려보아도 ParallelSort보다 sort가 빠릅니다.

하지만 3차 Test처럼 난수를 요소로 가진 배열을 가지고 정렬을 해보니 sort보다 ParallelSort가 더 빠릅니다.


최종 결과

배열의 크기가 크고, 배열의 요소들의 순서가 난수처럼 들쑥날쑥일때는 ParallelSort가 빠르다

큰 데이터 처리에는 ParallelSort

작은 데이터 처리에는 sort

가 현명한 답인 것 같습니다.


여기까지 이번 포스트를 마치겠습니다.

읽어주신 여러분 감사합니다~~~

관련글 더보기