ホームページ >バックエンド開発 >PHPチュートリアル >PHP は大きな配列内のランダムな小さな配列を迅速に取得します

PHP は大きな配列内のランダムな小さな配列を迅速に取得します

WBOY
WBOYオリジナル
2016-07-25 08:43:121014ブラウズ

ユーザーの好みを推測する機能があり、クリックしてグループを変更すると、おすすめのコンテンツを更新できます。

まずデータベースにクエリを実行して最初の 1000 個のデータを取得し、次にランダムに 4 個を削除します。

プログラムを書き終えた後、プログラムの実行が非常に遅く、更新するたびに実行されるまでに長い時間がかかることがわかりました。

コードは次のとおりです:

  1. $arr = range(1, 100000);
  2. $start = time();
  3. for($i = 0; $i $key = mt_rand(0, 99999 - $i);
  4. $result[] = $arr[$key];
  5. unset($arr[$key]);
  6. sort($arr);
  7. }
  8. $end = time( );
  9. echo $end - $start;
コードをコピー

上記の書き方はunsetを使った後にsortする必要があります。

unset はキー値を削除するだけですが、キーは保持されます。

改善された記述は次のとおりです:

  1. $arr = range(1, 100000);
  2. $start = time();
  3. for($i = 0; $i $key = mt_rand(0, 99999 - $i);
  4. $result[] = array_splice($arr, $key, 1);
  5. }
  6. $end = time();
  7. echo $end - $start;
コードをコピー

効率が3〜4倍向上しました。

グループ内で、php


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。