Scala bao gồm một số phương pháp trong các thư viện chuẩn để phân loại một danh sách, ví dụ để sắp xếp danh sách danh sách, người ta có thể sử dụng:Scala Bộ sưu tập được sắp xếp, sortWith và SortBy Performance
list.sorted
list.sortWith(_<_)
list.sortBy(x=>x)
Trong khi những có thể là cách đơn giản nhất để sắp xếp danh sách, tôi thấy rằng đối với các danh sách lớn hơn, chúng có nhược điểm hiệu suất đáng kể.
Ví dụ: để sắp xếp một triệu số nguyên, sắp xếp mất 500ms trung bình, trong khi sortWith và sortBy mất khoảng 700ms. Điều này được so sánh với scala.util.Sorting.quickSort trong đó mất khoảng 120ms và java.util.Arrays.sort mất khoảng 100ms. Đối với các danh sách lớn hơn, sự khác biệt nhiều yếu tố này được quan sát thấy khi chúng tôi mở rộng hơn nữa. Mẫu được hiển thị trong biểu đồ sau.
Lý do cho sự chậm trễ này về hiệu suất là gì? Và tại sao các thuật toán/triển khai không hiệu quả hơn được sử dụng cho các phương pháp chuẩn?
Ngoài những gì wingedsubmariner giải thích, lưu ý rằng quicksort không phải là một loại ổn định. Các loại dễ dàng, tốt cho một số lượng nhỏ các phần tử, là các loại ổn định chỉ để lại dữ liệu gốc và hoạt động trên tất cả các loại bộ sưu tập. Quicksort là một sắp xếp không ổn định, tại chỗ trên Mảng, để có hiệu suất tốt hơn - đáng để sử dụng nếu bạn có nhiều mục. – AmigoNico