3

我们知道,在失去恒定时间访问之前,Ruby 哈希可以容纳多少项目没有固定的规则,但我们希望有人能分享一些建议。

我们将 800K 键存储在 Ruby 哈希中,并为它们分配一个布尔值 true。而已。

每次查找似乎需要几秒钟。

Ruby 哈希是否应该使用 800K 键显示恒定时间查找?

是否有阈值或经验法则来预测何时会因大哈希而导致性能下降?我们很乐意听取 Ruby 专家的意见。

谢谢!

4

1 回答 1

2

除了使用 s.to_sym 将字符串转换为符号外,前提是您没有在一系列查找过程中创建或销毁哈希键,您还可以在一组查找之前调用 GC.disable 并在一组查找之后调用 GC.enable。这将暂时禁用垃圾收集,如果您正在运行例如,这样做是相对安全的。一个不会创建或删除大量对象的简单循环。

当内存中(Ruby)对象的数量达到数百万时,Ruby 的性能会显着下降。一些性能损失是垃圾收集例程进行盘点所花费的时间。

于 2013-03-11T10:47:42.187 回答