【发布时间】:2017-09-22 23:18:41
【问题描述】:
List 模块包含sortDescending 函数,可将列表从高到低排序。我读到对列表进行排序然后反转它会更快。于是我试了一下,好像是这样的。
[1.0..1000000.0] |> List.sortDescending;;
Real: 00:00:00.322, CPU: 00:00:00.328, GC gen0: 10, gen1: 4, gen2: 0
[1.0..1000000.0] |> List.sort |> List.rev;;
Real: 00:00:00.243, CPU: 00:00:00.250, GC gen0: 15, gen1: 7, gen2: 0
(我试了很多次,这些值很典型)
是否有任何理由使用sortDescending 而不是仅仅对列表进行排序然后反转结果?
【问题讨论】:
-
我会在这里使用随机测试进行测试 - 这里的输入已经排序,所以你会期望 sort then rev 会更快,但对于未排序的数据可能不是这样。
-
我尝试了随机浮点数并得到了相同的速度差异。