Rubyコーディングあれこれ(初めての方むけ:高速化 > ハッシュでフラグ管理する)
本地震の予測マップ・プログラムはRubyで書かれていますが、以前から初めての方むけにコーディングテクのようなモノをまとめておければ、と考えていました。 そこで思い付くままにまとめてみよう、と考えております。
今回は、大規模データをハッシュでフラグ管理し高速化を図るテクニックです。 (短くまとめます)
大規模データでかつデータアイテムが独立して100万を超えるような場合、各データ内容を示す(代表する)キーを作り、ハッシュ化しておきます。
この際:
hash[key] = true
として、keyで代表されるデータアイテムは存在する、というフラグ専用ハッシュを作りtrueをアサインしておきます。
探索し、データアイテムが存在し、処理が必要な場合は:
if hash[key] # == true はいらない(deafultだから)
データアイテムの処理(key)
end
にて対応します。
フラグをtrueにする事でif文で== trueがいらない、
そもそもハッシュになっているのでkeyの探索が高速、
の2点で極めて高速にデータアイテムの処理が出来ます。
たいした事ではありませんが、データアイテムの個数が膨大でかつランダムアクセスが必要な場合(これが普通かと思います)、この方法は極めて有効です。
以上です。