Ruby性能:多键哈希

3
假设我有一个查找表 q(w, x, y, z),其中各种键的组合映射到不同的值;例如, q(0, 0, 0, 0) = aq(0, 0, 0, 1) = bq(15, 16, 23, "b") = c
在效率方面,什么是用 Ruby 实现这个结构的最佳方式?键将动态生成,并且通常为字符串。我可以考虑使用三种不同的散列键方法:
  1. 使用字符串作为键:q["a, b, c, d"] = 0
  2. 使用单个数组作为键:q[["a", "b", "c", "d"]] = 0
  3. 使用散列的散列:q["a"]["b"]["c"]["d"] = 0
我目前正在使用第 2 种方法,但速度比我想象中慢一些。这些键组合是动态生成的 - 如果我要使用一个接受单个字符串的散列,字符串连接会更快吗?我一开始是否应该使用散列的散列?这种方法会占用更多的内存空间吗?
1个回答

1

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

一般来说,你希望映射键尽可能不可变。(键的变异可能会搞乱表格)。在Ruby中有时会很混乱,因为字符串是可变的,但仍然是一个值得追求的目标。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接