-1

我正在执行以下操作:

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

有什么办法可以优化这个(非常简单的)代码,尤其是对于大cTable而稀疏的代码dTable

4

1 回答 1

1

我很好奇,所以我对它进行了基准测试。(http://ruby-doc.org/stdlib-1.9.3/libdoc/benchmark/rdoc/Benchmark.html)

我为 C 表生成了随机数。基本上,如果值在数组的长度范围内,则使用 Array 会更好地提高速度,而当它们更大时使用 Hash 会更好。

我尝试了 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
于 2012-09-19T08:24:07.087 回答