Tôi đã đoạn mã sau,Arrays.sort và Arrays.parallelSort chức năng hành vi
import java.util.Arrays;
public class ParellelStream {
public static void main(String args[]){
Double dbl[] = new Double[1000000];
for(int i=0; i<dbl.length;i++){
dbl[i]=Math.random();
}
long start = System.currentTimeMillis();
Arrays.parallelSort(dbl);
System.out.println("time taken :"+((System.currentTimeMillis())-start));
}
}
Khi tôi chạy mã này phải mất thời gian khoảng 700-800 ms, nhưng khi tôi thay thế dòng Arrays.parallelSort để mảng .sort phải mất 500 đến 600 ms. Tôi đã đọc về phương thức Arrays.parallelSort và Arrays.sort mà nói rằng Arrays.parellelSort cho hiệu suất kém khi tập dữ liệu nhỏ nhưng ở đây tôi đang sử dụng mảng của 1000000 phần tử. những gì có thể là lý do cho hiệu suất kém parallelSort ?? Tôi đang sử dụng java8.
Các bạn đã thử đặt các loại theo thời gian trong một vòng lặp và làm nó nhiều lần trong một invocation? Khởi động các luồng làm phép phân loại song song có một đầu vào, nhưng chúng sẽ được tái sử dụng trong suốt thời gian tồn tại của chương trình. Vì vậy, đối với thử nghiệm trong thế giới thực (trừ khi trường hợp sử dụng của bạn thực sự là một chương trình một lần), bạn nên lặp lại việc phân loại thường xuyên để phân bổ chi phí. –
Có bao nhiêu lõi xử lý trên máy thử nghiệm của bạn? Nó tương đối yên tĩnh với chỉ chạy thử nghiệm của bạn? –
Có, tôi đã thử theo cách đó cũng như @SebastianRedl –