Scala включает несколько методов в стандартную библиотеку для сортировки списка, например для сортировки списка списка, можно использовать:
list.sorted
list.sortWith(_<_)
list.sortBy(x=>x)
Хотя это могут быть самые простые способы сортировки списка, я обнаружил, что для больших списков они имеют существенный недостаток производительности.
Например, чтобы отсортировать миллион целых чисел, сортировка занимает в среднем 500 мс, а sortWith и sortBy - около 700 мс. Это сравнивается с scala.util.Sorting.quickSort, который занимает около 120 мс и java.util.Arrays.sort, который занимает около 100 мс. Для более крупных списков эта множественная разность факторов наблюдается по мере дальнейшего увеличения. Шаблон показан на следующей диаграмме.
В чем причина этого отставания в производительности? И почему не используются более эффективные алгоритмы/реализации, используемые для стандартных методов?