sai che ho fatto delle prove e array_pop risulta più veloce solo sotto la soglia di 40 elementi da estrarre?
dopo è più veloce la soluzione in_array
metto il codice che ho usato per il test
Codice PHP:
<?php
$s = 1; // valore di partenza per random
$t = 300; // valore di fine per random
$n = 7; // numero di elementi da estrarre
$p = 0; // contatore ripetizioni per test
$p_max = 1000; // numero di ripetizioni per test
$faster_2 = 0; // variabile contatore per contare quando array_pop è più veloce
while($p < $p_max) {
// inizio con in_array()
$start1 = microtime();
$range = array();
for($a = 0; $a <= $n; $a++) {
$num = rand($s, $t);
if(!in_array($num, $range)) {
$range[] = $num;
}
}
$elapsed1 = microtime() - $start1;
// proseguo con array_pop()
$start2 = microtime();
$range1 = range($s, $t);
$range1_out = array();
shuffle($range1);
for($a = 0; $a <= $n; $a++) {
$range1_out[] = array_pop($range1);
}
$elapsed2 = microtime() - $start2;
// delta di esecuzione dei due metodi
$delta = $elapsed1 - $elapsed2;
// se array_pop è più veloce, aggiungo al contatore
if($delta < 0) {
$faster_2++;
}
$p++;
}
echo "array pop è più veloce nel " . $faster_2 / $p_max * 100 . "% dei casi\n";
?>