не понимат |
[Sep. 25th, 2018|11:33 pm] |
|
|
|
Comments: |
From: | (Anonymous) |
Date: | September 26th, 2018 - 04:08 am |
---|
| | | (Link) |
|
Legacy же Диды квиксортили и правнуки будут
Ну вот не надо. В JDK, например, mergesort используется, на основе которого сделан timsort. Просто timsort заточен на типа real world задачи, в которых равномерно случайно распледеленные данные - скорее исключение.
Бля, начиная с OpenJDK 7 timsort штоле? Пиздец, а народ то и не в курсе.
| From: | ketmar |
Date: | September 26th, 2018 - 12:32 pm |
---|
| | | (Link) |
|
тим даже на полностью рандомных данных (ну, насколько их можно получить) показывает вполне годные результаты — лучше glibc-шного квиксорта. это очень странно, кстати: даже heap sort обходит qsort на таких наборах. по-моему, у меня поломаный тест.
Так что с тестами? Люди волнутся же, сколько можно саспенс этот держать?
| From: | ketmar |
Date: | September 26th, 2018 - 06:34 pm |
---|
| | | (Link) |
|
да воьзми любую из реализаций и проверь. мне лень.
Хз, на полностью рандомизированных (на каждой итерации) данных квик все таки пизже, как и ожидалось:
# Warmup: 10 iterations, 1 s each
# Measurement: 10 iterations, 1 s each
# Benchmark mode: Average time, time/op
Benchmark Mode Cnt Score Error Units
SortBench.mergeSort avgt 20 0.436 ? 0.006 ms/op
SortBench.quickSort avgt 20 0.206 ? 0.003 ms/op
Бля, ты же там с хипсортом сравнивал. Плюс я в тесте проебался чучуть. Новые результаты:
Benchmark Mode Cnt Score Error Units
SortBench.heapSort avgt 20 1.503 ? 0.032 ms/op
SortBench.mergeSort avgt 20 1.175 ? 0.026 ms/op
SortBench.quickSort avgt 20 0.886 ? 0.010 ms/op
Сортировка написана одним и тем же человеком, соответственно радиус кривизны рук должен быть плюс-минус одинаков.
О, а вот кстати jre-шный timsort. Как и было обещано, он не хуже mergesort'а на случайных данных:
SortBench.jreSort avgt 20 1.048 ? 0.007 ms/op
| |