search_arrayやin_arrayは遅いので・・・

By | 2014年2月20日

nigaraです。

最近大量のデータ解析をやってるのですが、何も考えずに配列に突っ込んで検索してたら処理が終わらなくなったでござる。

例えば以下のようなコード

$datasの要素数は76070。$user_id_datasの要素数は1117。

掛かった時間は10.5 sec。検索元の要素数が増えると1(n)となり全く終わらなくなる・・・。

そこでこのデータを配列ではなく連想配列に入れ、keyの評価にすると一気に改善します。

0.8 sec。10倍以上、検索が増えればさらにその差は開きます。

PHPに限らずPerlも同じで

grepで検索だと7秒。

連想配列だと0.2秒。こちらも大幅に速くなります。

業務では配列の検索を極力使わないか、いっそ禁止にした方が良さそうですね。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です