所以我们来看看这段代码:
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会更好看似乎是合乎逻辑的,但是如果我在短暂的职业生涯中学到的一件事,并不总是看起来那样,而且我真的不喜欢在生产中测试这个:)
答案 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确实更好。