BitArts Blog

ロードバイク通勤のRubyプログラマで伊豆ダイバー。の個人的なブログ。

RubyのArray#include?は遅いですよ

RubyのArray#include?メソッドは、配列の中に指定の値が存在するかどうかを確認するもので、非常に便利。が、実態は単純にリニアで文字列比較しているだけと思われ、かなり重い処理になります。一行で気軽に書けるけど重いよ。という落とし穴の代表と言えるかも。

何も考えないで気軽に使ってしまうと、重いプログラムのできあがり、となりがち。特に大きな配列やループ内では注意しましょう。逆に、プログラムはシンプルなのにやけに重いという場合はこの辺注意して確認してみましょう。意外とArrayのメソッドは便利だけど重量級なものが多いかも。

include?を多用したいような処理では、多くの場合Hashで代用できるんじゃないでしょうか。

自分は2回ハマったので、メモ。