-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 テーブルの乱数を生成しました。基本的に、値が配列の長さの範囲内にある場合は配列を使用する方が高速であり、値がはるかに大きい場合はハッシュを使用する方が適切です。

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 に答える