2014-05-02 63 views
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; 

誰能告訴我這是爲什麼?我覺得後一種方法看起來比前者更好寫,更乾淨,但速度的提高並不值得。

+0

速度有什麼區別? – Daan

+0

調用多個函數時總會有開銷。 – ComFreek

+0

PHP在調用函數時總是*一直很慢。 'array_map','array_walk','usort'等,都受到這個困擾。 – h2ooooooo

回答

2

區別非常小,甚至不值得擔心。

只需選擇與您的編程風格相匹配的東西,您更喜歡親自體驗,並且這對您的應用程序更好。

找到其他地方進行優化...不要過分強調,爲每個,而同時!

相關問題