[PHP-users 16895]Re: in_array()なぜだめ?

kentarou_ishimaru kehi @ scg.fuji-ric.co.jp
2003年 7月 22日 (火) 16:13:21 JST


 kehiといいます。

>大垣です。
>ISIGEさんが説明されている通りです。
>
>追加で説明すると、in_array()を利用した場合 O(n)の実行時間が
>必要になり、PHPの配列がハッシュである特徴を利用した場合、
>O(1)の実行時間が必要になります。
>
>小さいや単純なプログラム、同時ユーザ数の少ない忙しくない
>Webサーバではこの違いは判りづらいかも知れませんが、条件に
>よってはこの変更により数倍の性能が実現できる事もあります。

とある、以前作ったシステムにてin_array()を使って
数万件の登録データのサニタイズをしている処理で試したところ、
配列で49秒かかっていた処理がハッシュで13秒に短縮しました。
ホントに数倍の性能アップ、体感しました。
とてもいい情報感謝です。

他にもこういったTIPSってありますでしょうか?

たとえば1行で処理を書いた場合と複数行に渡って分けた場合と、
どちらが効率的かなど。。。
#前者と思ってますが、もしかしてコンパイルされてしまえば変わりませんか?

$hoge = substr(str_replace("$","",uniqid(crypt($hoge))),3,7);
と
$hoge = crypt($hoge);
$hoge = uniqid($hoge);
$hoge = str_replace("$","",$hoge);
$hoge = substr($hoge,3,7);
など。。。

けひ


PHP-users メーリングリストの案内