我正在执行以下操作:
def createDTable
dTable = Array.new
cTable.each_index do |i|
dTable[cTable[i]] = i
end
end
有什么办法可以优化这个(非常简单的)代码,尤其是对于大cTable
而稀疏的代码dTable
?
我正在执行以下操作:
def createDTable
dTable = Array.new
cTable.each_index do |i|
dTable[cTable[i]] = i
end
end
有什么办法可以优化这个(非常简单的)代码,尤其是对于大cTable
而稀疏的代码dTable
?
我很好奇,所以我对它进行了基准测试。(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