Scala zawiera kilka metod w standardowej biblioteki do sortowania listy, na przykład, aby posortować listę lista , można użyć:Scala Collection sortowane, sortWith i SortBy Wydajność
list.sorted
list.sortWith(_<_)
list.sortBy(x=>x)
Choć mogą one być Najprostsze sposoby sortowania listy, zauważyłem, że w przypadku większych list mają znaczący wady wydajności.
Na przykład, aby posortować milion liczb całkowitych, posortowane zajmuje średnio 500 ms, podczas sortowania i sortowania zajmuje około 700 ms. Jest to porównywane do scala.util.Sorting.quickSort, które trwa około 120ms i java.util.Arrays.sort, które zajmuje około 100ms. W przypadku większych list, ta różnica wielu czynników jest obserwowana, gdy skalujemy dalej. Wzór jest pokazany w poniższej tabeli.
Co jest powodem tego opóźnienia w wydajności? I dlaczego nie są bardziej wydajne algorytmy/implementacje używane dla standardowych metod?
Oprócz tego, co wyjaśnił wingedsubmariner, należy pamiętać, że quicksort nie jest stabilny. Łatwe sortowanie, które jest dobre dla niewielkiej liczby elementów, to stabilne rodzaje, które pozostawiają oryginalne dane i pracują na wszystkich typach kolekcji. Quicksort to niestanowiący stabilnego sortowania na miejscu w Array, dla lepszej wydajności - warty wysiłku użycia, jeśli masz dużo przedmiotów. – AmigoNico