哪个是更好的性能vise,shuffle然后是array_slice,还是array_rand?

时间:2015-08-11 06:27:25

标签: php

所以我们来看看这段代码:

shuffle($pushed_products_items);
$pushed_products_items = array_slice($pushed_products_items, 0, 7);

对此:

$pushed_products_items = array_rand($pushed_products_items, 7);

哪一款性能更好?

array_rand会更好看似乎是合乎逻辑的,但是如果我在短暂的职业生涯中学到的一件事,并不总是看起来那样,而且我真的不喜欢在生产中测试这个:)

1 个答案:

答案 0 :(得分:0)

我写了以下测试:

<?php

$start = microtime(true);

$arr = array(12, 554, 54, 68, 54, 564, 45, 545, 87, 878, 5454, 545, 55, 9898, 98, 87, 21, 21, 54, 54, 87, 98, 54, 54, 99,);

for($i = 0; $i < 1000000; $i++)
{
    $tmp = array_rand($arr, 7);
}

echo microtime(true) - $start;

而且:

<?php

$start = microtime(true);

$arr = array(12, 554, 54, 68, 54, 564, 45, 545, 87, 878, 5454, 545, 55, 9898, 98, 87, 21, 21, 54, 54, 87, 98, 54, 54, 99,);

for($i = 0; $i < 1000000; $i++)
{
    shuffle($arr);
    $tmp = array_slice($arr, 0, 7);
}

echo microtime(true) - $start;

因此,对于1mil迭代,avg上的shuffle + array_slice需要5.2s,而array_rand需要3.2g的avg。

所以,array_rand确实更好。