История изменений
Исправление AndreyKl, (текущая версия) :
разница по времени в 4 раза - в пределах погрешности. покажи, как именно мерял.
*Списки> let l = take 5000000 $ randomList 42 :: [Int]
(0.00 secs, 0 bytes)
*Списки> let l1 = qsort' l
(0.00 secs, 0 bytes)
*Списки> let l2 = qsort l
(0.00 secs, 0 bytes)
*Списки> let l3 = Data.List.sort l
(0.00 secs, 0 bytes)
*Списки> drop 4999999 l1
[9223371674832527611]
(120.37 secs, 38,466,246,728 bytes)
*Списки> drop 4999999 l2
[9223371674832527611]
(118.79 secs, 17,860,522,760 bytes)
*Списки> drop 4999999 l3
[9223371674832527611]
(55.86 secs, 7,841,731,272 bytes)
нормальный qsort должен сортировать список in-place без лишних затрат памяти, но это haskell. может, отсюда и замедление растет.
вероятно, да
Исходная версия AndreyKl, :
разница по времени в 4 раза - в пределах погрешности. покажи, как именно мерял.
*Списки> let l = take 5000000 $ randomList 42 :: [Int]
(0.00 secs, 0 bytes)
*Списки> let l1 = qsort' l
(0.00 secs, 0 bytes)
*Списки> let l2 = qsort l
(0.00 secs, 0 bytes)
*Списки> let l3 = Data.List.sort l
(0.00 secs, 0 bytes)
*Списки> drop 4999999 l1
[9223371674832527611]
(120.37 secs, 38,466,246,728 bytes)
*Списки> drop 4999999 l2
[9223371674832527611]
(118.79 secs, 17,860,522,760 bytes)
*Списки> drop 4999999 l3
[9223371674832527611]
(55.86 secs, 7,841,731,272 bytes)