【问题标题】:Ruby performance: Multi-key hashesRuby 性能:多键哈希
【发布时间】:2012-01-02 13:50:03
【问题描述】:

假设我有一些查找表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,它比我想要的要慢一些。这些组合键是动态生成的——如果我使用一个带单个字符串的哈希,字符串连接会更快吗?我应该首先从哈希开始吗?这种方法会占用更多内存空间吗?

【问题讨论】:

    标签: ruby performance data-structures hash


    【解决方案1】:

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

    一般来说,您希望地图键尽可能不可变。 (一个关键的变异可能会弄乱桌子)。有时在 Ruby 中会很混乱,因为字符串是可变的,但仍然是一个值得的目标。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-01
      • 2019-04-24
      • 2015-07-24
      • 2011-06-30
      • 2018-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多