为啥网上都说array_map比foreach快,我测试的结果是foreach最快呢。
php版本
PHP 7.0.1 (cli) (built: Dec 16 2015 13:36:28) ( NTS )
Copyright (c) 1997-2015 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2015 Zend Technologies
with Xdebug v2.4.0RC3, Copyright (c) 2002-2015, by Derick Rethans
$prize_list = [];
// $total = 0;
for($i = 0; $i < 10000; $i ++){
$prize_list[] = ['probability' => $i];
$total += $i;
}
$avg = 0;
for($i = 0; $i < 100; $i ++){
$start = microtime(true);
array_map(function($item){}, $prize_list);
$end = microtime(true);
$avg += ($end - $start);
}
echo "array_map avg: ",$avg/100, "\n";
unset($avg, $i, $start, $end);
$avg2 = 0;
for($i = 0; $i < 100; $i ++){
$start = microtime(true);
foreach($prize_list as $item){}
$end = microtime(true);
$avg2 += ($end - $start);
}
echo "foreach avg, avg: ",$avg2/100, "\n";
unset($avg, $i, $start, $end);
$avg3 = 0;
for($i = 0; $i < 100; $i ++){
$start = microtime(true);
array_walk($prize_list, function($item){});
$end = microtime(true);
$avg3 += ($end - $start);
}
echo "array_walk avg: ",$avg3/100, "\n";
代码有毛病?
array_map avg: 0.021691238880157
foreach avg, avg: 0.00066004037857056
array_walk avg: 0.023171319961548
[Finished in 4.6s]
网上的评价都是基于PHP5版本的,现在PHP7版本foreach的性能提高了很多,foreach不需要执行回调函数,foreach更快.。网上的一大堆摘抄的人,知识库该更新了。