Не могу толком померить скорость работы array_intersect, интересует чистое время выполнения функции при пересечении пары массивов целых на 7000 элементов каждый.
Код:
define("ARRAY_SIZE", 7000);
define("PASSES", 100);
function randomArray($size = 1000, $min = 1, $max = 65535 ) {
$res = [];
for($i = 0; $i< $size; $i++) {
$res[] = mt_rand($min, $max);
}
return $res;
}
$a = randomArray(ARRAY_SIZE);
$b = randomArray(ARRAY_SIZE);
for($i = 0; $i < PASSES; $i++) {
$x = array_intersect($a, $b);
}
echo "C=", count($x), " \n";
Запуск XDebug в режиме профайлера говорит, что порядка 5 единиц (то есть по хелпу это 5 микросекунд), однако скрипт выполняется примерно 5с (с выключенным профайлером, PHP 5.6.7). Сколько же реально-то?
Есть ли какой-то вариант сделать это пересечение быстрее? Нужен
очень быстрый способ сделать примерно сотню таких пересечений.