Heim >php教程 >PHP源码 >PHP erhält schnell zufällige kleine Arrays in großen Arrays

PHP erhält schnell zufällige kleine Arrays in großen Arrays

大家讲道理
大家讲道理Original
2016-11-11 09:45:291340Durchsuche

Es gibt eine Funktion zum Erraten, was Benutzern gefällt. Benutzer können darauf klicken, um eine Gruppe zu ändern und den empfohlenen Inhalt zu aktualisieren.

Fragen Sie zuerst die Datenbank ab, um die ersten 1000 Daten zu erhalten, und entfernen Sie dann zufällig 4 Daten.

Nachdem ich das Programm fertig geschrieben hatte, stellte ich fest, dass es sehr langsam lief. Jedes Mal, wenn ich es aktualisierte, musste ich lange warten, bis es herauskam.

Der Code lautet wie folgt:

$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;

Die obige Schreibmethode muss nach der Verwendung von unset sortiert werden.

Unset löscht nur den Schlüsselwert, der Schlüssel bleibt jedoch erhalten.

Das verbesserte Schreiben ist wie folgt:

$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;

Die Effizienz wurde um das 3-4-fache erhöht.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn