地震の予測マップ

地震発生ヶ所をポイント予測

Rubyコーディングあれこれ(初めての方むけ:高速化 > ハッシュでフラグ管理する)

  本地震の予測マップ・プログラムはRubyで書かれていますが、以前から初めての方むけにコーディングテクのようなモノをまとめておければ、と考えていました。 そこで思い付くままにまとめてみよう、と考えております。

今回は、大規模データをハッシュでフラグ管理し高速化を図るテクニックです。 (短くまとめます)

 

  大規模データでかつデータアイテムが独立して100万を超えるような場合、各データ内容を示す(代表する)キーを作り、ハッシュ化しておきます。

この際:

  hash[key] = true

として、keyで代表されるデータアイテムは存在する、というフラグ専用ハッシュを作りtrueをアサインしておきます。

探索し、データアイテムが存在し、処理が必要な場合は:

  if hash[key]  # == true はいらない(deafultだから)

    データアイテムの処理(key)

  end

にて対応します。

フラグをtrueにする事でif文で== trueがいらない、

そもそもハッシュになっているのでkeyの探索が高速、

の2点で極めて高速にデータアイテムの処理が出来ます。

 

たいした事ではありませんが、データアイテムの個数が膨大でかつランダムアクセスが必要な場合(これが普通かと思います)、この方法は極めて有効です。

 

以上です。