ruby 性能 : Multi-key hashes

标签 ruby performance data-structures hash

假设我有一些查找表,q(w, x, y, z),其中键的各种组合映射到不同的值;即,q(0, 0, 0, 0) = aq(0, 0, 0, 1) = bq(15, 16 , 23, "b") = c

就效率而言,在 Ruby 中实现此结构的最佳方法是什么? key 将动态生成,通常是字符串。我可以想到三种不同的哈希键控方法:

  1. 使用字符串作为键:q["a, b, c, d"] = 0
  2. 使用单个数组作为键:q[["a", "b", "c", "d"]] = 0
  3. 使用哈希的哈希:q["a"]["b"]["c"]["d"] = 0

我目前正在使用方法 2,它比我希望的要慢一点。这些键组合是动态生成的——如果我使用一个包含单个字符串的散列,字符串连接会更快吗?我应该首先从散列的散列开始吗?这种方法会占用更多的内存空间吗?

最佳答案

我会选择像您的 #1 这样的方法:创建一个字符串,然后将其作为您的 map 键。但是,请确保您的“代理哈希键”对于各种值组合而言都是唯一的。在这种情况下,您只需构建一个简单的字符串并需要一个映射。

一般来说,您希望 map 键尽可能不可变。 (一个关键的变异可能会弄乱表格)。有时在 Ruby 中会很困惑,因为字符串是可变的,但仍然是一个有值(value)的目标。

关于 ruby 性能 : Multi-key hashes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8205450/

相关文章:

algorithm - 无向图中连通分量的数量

Ruby 在 Ubuntu 上需要 Fox 错误

ruby-on-rails - 如何使用哈希数组

python - 多次使用 min() 还是将其存储在变量中对性能更好?

windows - 性能随机下降

c++ - 将 3 个列表合并为一个大列表

data-structures - 什么是最适合实现记事本等编辑器的数据结构?

javascript - 根据 ruby​​ 逻辑将确认弹出窗口附加到按钮元素

ruby-on-rails - 设计创建时髦的编辑用户密码路径

javascript - 让 ajax 获取 html 或获取 JSON 并让 javascript 创建 html 是否更有效