代码之家  ›  专栏  ›  技术社区  ›  Cedric H.

Ruby数组操作优化

  •  -1
  • Cedric H.  · 技术社区  · 13 年前

    我正在执行以下操作:

    def createDTable
      dTable = Array.new
      cTable.each_index do |i|
        dTable[cTable[i]] = i
      end
    end
    

    有没有什么方法可以优化这个(非常简单的)代码,特别是对于大型 cTable 和稀疏 dTable ?

    1 回复  |  直到 13 年前
        1
  •  1
  •   AJcodez    13 年前

    我很好奇,所以我做了基准(http://ruby-doc.org/stdlib-1.9.3/libdoc/benchmark/rdoc/Benchmark.html)

    我为C表生成了随机数。基本上,如果值在数组的长度内,则使用数组的速度会更好,如果值大得多,则使用哈希会更好。

    我尝试了5种不同的组合:

    randoms to 10,000, array size 100,000 => Array
    randoms to 100,000, Array size 10,000 => Hash
    randoms to 100,000, array size 100,000 => Array
    randoms to 1,000,000, Array size 100,000 => Array
    randoms to 10,000,000, Array size 100,000 => Hash
    

    不管怎样,这是我的备用代码,但你可能还可以。

    def create_d_hash(c_table)
      d_hash = {}
      c_table.each_with_index do |value, index|
        d_hash[value] = index
      end
      d_hash
    end
    
    推荐文章