すぐループして処理しようという発想はやめよう!計算量考えることのススメ
配列とかにあるデータを一通り処理したいときはforとかforeachが便利なのですが、計算量を考えて、できるだけ使わないようにするのが大事という話。
$datas['key01'] = 1; $datas['key02'] = 1; $datas['key03'] = 1; foreach ($datas as $key => $value) { if ($key === 'key01') { return true; } }
こういうシンプルな処理でも、$datas配列の中身が1000万件などでかくなればなるほど、無駄な処理が増えてしまいます。
そんなときは、 isset()
をうまく使うといいです。
PHP以外の言語でも計算量を調べた上で、適切な関数を使いましょう。
$datas['key01'] = 1; $datas['key02'] = 1; $datas['key03'] = 1; $target_key = 'key01'; if (isset($datas[$target_key])) { return true; }
これならループせず、1回で処理済みますね。
データ量が少ないうちから、出来る限り計算量が少なくなる癖をつけておくとよいでしょう。 ではでは!
P.S. 2016/06/15 追記
配列の要素確認と実行速度 : アシアルブログ によると、 isset()
は計算量的にはO(1)とのことでした。総なめよりは早いですね。詳細なアルゴリズムはソース読んで勉強しておきますm( )m 詳しい方いましたらご教授ください。
Dustin Boswell,Trevor Foucher オライリージャパン 2012-06-23
NECラーニング株式会社 内山 祥恵,NECラーニング株式会社 棚橋 英之,株式会社マルチメディアスクール・ウェーヴ インプレスジャパン 2012-09-14
世界で闘うプログラミング力を鍛える150問 トップIT企業のプログラマになるための本
posted with カエレバ
Gayle Laakmann McDowell マイナビ出版 2012-11-13