【发布时间】:2015-04-10 02:37:38
【问题描述】:
我有一个包含 3000 个数字的数组。
用户抓取一个号码,然后在接下来的 5 秒内任意时间放回号码。
我希望用户每次都取数组中最小的数字。
在高峰期,最多有 100 人同时抓取和替换号码。与对整个数组进行排序相比,选择前 100 个并对其进行排序会更便宜吗?
我使用 Rails serialize 在 PostgreSQL 中使用 YAML 存储我的数组
【问题讨论】:
-
与所有与性能相关的问题一样:对其进行基准测试。
-
这是一个奇怪的问题,因为结果没有可比性。无论如何,取前 101 个元素比排序相同数量的元素花费的时间要少得多,排序 101 个元素所花费的时间只是排序 30 倍的时间的一小部分,因此基准测试是浪费时间。跨度>
-
@muistooshort 这已经回答了我 50% 的问题。
-
@shiva 你想做什么?如果您有
[7, 3, 5, 10, 2, 8, 6, 1, 9, 4],则对前 3 个项目进行排序会得到[3, 5, 7],而不是[1, 2, 3]。结果完全不同。 -
我有一个队列,用户可以在其中抓取号码并将其放回原处。我希望每次@Stefan 都返回最小的数字
标签: ruby arrays performance postgresql