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

大家讲道理
リリース: 2016-11-11 09:45:29
オリジナル
1304 人が閲覧しました

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

まずデータベースにクエリを実行して最初の 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倍向上しました。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート