gpt4 book ai didi

ruby - 在 Ruby 散列中使用 fixnums 作为键好吗?

转载 作者:数据小太阳 更新时间:2023-10-29 08:25:01 25 4
gpt4 key购买 nike

我正在创建一个散列来表示 MySQL 数据库中的一些记录。哈希键对应数据库ID字段,哈希值对应数据库名称字段。

什么更好,为什么?

  1. 数组

    这行得通,但 Ruby 似乎对稀疏数组效率低下,因为设置所有中间索引的值似乎有额外的开销 tp nil

    fruits = []
    fruits[23] = "apple"
    fruits[109] = "orange"
    # ...
    fruits[23429] = "banana"
  2. 以 fixnum 为键的散列

    我最喜欢这个,但我一直读到最好使用符号作为散列中的键。使用 fixnums 作为散列中的键是否同样好?我不确定它是否是,但我认为 34.hash 因为 fixnums 的性质,即 34.equal? 34 为真而 "hi".equal? “嗨” 是错误的。

    fruits = {
    23 => "apple",
    109 => "orange",
    # ...
    23429 => "banana"
    }
  3. 以 fixnums 的内部字符串表示作为键的散列

    通过将 fixnums 转换为字符串,然后转换为符号,我可以使用符号作为键。然而,这种转换很烦人,有人曾经告诉我实习字符串效率低下。是这样吗?它们在我看来很丑。

    fruits = {
    :"23" => "apple",
    :"109" => "orange",
    # ...
    :"23429" => "banana"
    }
  4. 以符号为键的哈希

    我可以通过在每个键前加上一个字母字符来获得更漂亮的符号(并且还使用新的 Ruby 1.9 哈希语法),但是,此解决方案还需要转换。

    fruits = {
    i23: "apple",
    i109: "orange",
    # ...
    i23429: "banana"
    }

最佳答案

我的建议:使用带有 Fixnum 键的 Hash

如您所说,这将允许稀疏对象。有适用于 Fixnum 的特殊速度和内存优化。他们按预期进行比较并转换为所有内容。它应该比符号更快、更简单,而且您不会遇到通常无法解析的驻留字符串的奇怪情况。

关于ruby - 在 Ruby 散列中使用 fixnums 作为键好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5489345/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com