【发布时间】:2019-08-13 21:32:09
【问题描述】:
有谁知道 .reverse() 在 JS 中用于反转对象列表的效率如何?
我很好奇按升序对列表(例如 100 个对象)进行排序和反转它而不是仅按降序排序列表是否会有任何有意义的性能损失。
编辑: 所以我进行了一些测试,对数组进行降序排序,然后逆序升序。结果非常有趣: (在铬中运行)
- 1000 项随机排序,降序正常排序,10000 次试验:0.3681 毫秒
- 1000 项随机排序,升序倒序,10000 次试验:0.3651 毫秒
- 1000项升序,正常降序,10000次试验:0.0282 ms
- 1000 项升序,升序倒序,10000 次试验:0.0247 毫秒
似乎 .reverse() 不是一个非常昂贵的操作,尤其是与排序相比时。
【问题讨论】:
-
Reverse 将花费 O(n),微不足道,因此最好按照您希望它们出现的顺序对其进行排序(在您的情况下为降序)
-
reverse() 包含 100 个元素的数组的时间完全可以忽略不计,除非在最敏感的应用程序中。
-
即使是这种情况,它仍然需要 O(n) 来完成(遍历每个节点并交换 next 和 prev 指针)。你几乎无法逃避 O(n) 进行反向,除非你使用奇怪的数据结构
-
我认为你过早地优化了。
-
唯一确定的答案是:创建一个测试用例,在您的设备上使用您的数据,运行几千次并测量它所花费的时间。
标签: javascript performance optimization processing-efficiency