Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我们知道,在失去恒定时间访问之前,Ruby 哈希可以容纳多少项目没有固定的规则,但我们希望有人能分享一些建议。
我们将 800K 键存储在 Ruby 哈希中,并为它们分配一个布尔值 true。而已。
每次查找似乎需要几秒钟。
Ruby 哈希是否应该使用 800K 键显示恒定时间查找?
是否有阈值或经验法则来预测何时会因大哈希而导致性能下降?我们很乐意听取 Ruby 专家的意见。
谢谢!
除了使用 s.to_sym 将字符串转换为符号外,前提是您没有在一系列查找过程中创建或销毁哈希键,您还可以在一组查找之前调用 GC.disable 并在一组查找之后调用 GC.enable。这将暂时禁用垃圾收集,如果您正在运行例如,这样做是相对安全的。一个不会创建或删除大量对象的简单循环。
当内存中(Ruby)对象的数量达到数百万时,Ruby 的性能会显着下降。一些性能损失是垃圾收集例程进行盘点所花费的时间。