ホームページ >php教程 >PHP源码 >PHP は大きな配列内のランダムな小さな配列を迅速に取得します

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

大家讲道理
大家讲道理オリジナル
2016-11-11 09:45:291340ブラウズ

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

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

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

コードは以下の通りです:

$arr = range(1, 100000);
$start = time();
for($i = 0; $i < 100; $i ++){
    $key = mt_rand(0, 99999 - $i);
    $result[] = $arr[$key];
    unset($arr[$key]);
    sort($arr);
}
$end = time();
echo $end - $start;

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

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

改善された書き込み方法は次のとおりです:

$arr = range(1, 100000);
$start = time();
for($i = 0; $i < 100; $i ++){
    $key = mt_rand(0, 99999 - $i); 
    $result[] = array_splice($arr, $key, 1);
}
$end = time();
echo $end - $start;

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

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