Ruby性能:多键哈希

Ruby性能:多键哈希,ruby,performance,data-structures,hash,Ruby,Performance,Data Structures,Hash,假设我有一些查找表,q(w,x,y,z),其中不同的键组合映射到不同的值;i、 例如,q(0,0,0,0)=a,q(0,0,0,1)=b,q(15,16,23,“b”)=c 在效率方面,在Ruby中实现这种结构的最佳方法是什么?密钥将动态生成,通常为字符串。我可以想到三种不同的哈希键控方法: 使用字符串作为键:q[“a,b,c,d”]=0 使用单个数组作为键:q[[“a”、“b”、“c”、“d”]=0 使用散列:q[“a”][“b”][“c”][“d”]=0 我目前正在使用方法2,它比我想要的要

假设我有一些查找表,
q(w,x,y,z)
,其中不同的键组合映射到不同的值;i、 例如,
q(0,0,0,0)=a
q(0,0,0,1)=b
q(15,16,23,“b”)=c

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

  • 使用字符串作为键:
    q[“a,b,c,d”]=0
  • 使用单个数组作为键:
    q[[“a”、“b”、“c”、“d”]=0
  • 使用散列:
    q[“a”][“b”][“c”][“d”]=0

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

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

    一般来说,您希望映射键尽可能不可变。(一个键突变可能会把桌子弄乱)。在Ruby中有时会出现混乱,因为字符串是可变的,但仍然是一个值得追求的目标