0
我做了一個測試,真的感到很沮喪,發現標準的foreach
循環執行速度比使用數組方法快得多。爲什麼標準的foreach循環更快?
使用foreach
:
$std_dev = 0;
$mean = self::calc_stat_mean($array);
$start = microtime(true);
foreach ($array as $value)
{
$std_dev += pow(($value - $mean), 2);
}
echo microtime(true) - $start;
使用數組方法:
$mean = self::calc_stat_mean($array);
$start = microtime(true);
$std_dev = array_sum(array_map(function($value) use ($mean) {
return pow(($value - $mean), 2);
}, $array));
echo microtime(true) - $start;
誰能告訴我這是爲什麼?我覺得後一種方法看起來比前者更好寫,更乾淨,但速度的提高並不值得。
速度有什麼區別? – Daan
調用多個函數時總會有開銷。 – ComFreek
PHP在調用函數時總是*一直很慢。 'array_map','array_walk','usort'等,都受到這個困擾。 – h2ooooooo