なぜ、標準関数の実行速度は、「foreach+function」に比べて早いのでしょうか?
例えば、下記のような場合で比較してみます(Aを実行時はBをコメントアウトする。その逆も同様)
PHP
1function cube($n) 2{ 3 return($n * $n * $n); 4} 5 6$a = range(1,1000); 7 8// A:標準関数使用時 9$time_start = microtime(true); 10$b = array_map("cube", $a); 11$time = microtime(true) - $time_start; 12echo "{$time} 秒"; 13 14// B:ループ使用時 15$startLoop = microtime(true); 16foreach($a as $value){ 17 $useForeach[] = cube($value); 18} 19$endLoop = microtime(true) - $startLoop; 20echo "{$endLoop} 秒"; 21
上記の結果から、浮かんだ疑問として
1.これは、PHPがC言語で書かれている事が理由なのでしょうか?
2.1が正しいと仮定した場合、なぜC言語で書かれた処理はforeachより高速になるのでしょうか?
3.このような疑問点の理解の助けとなる情報を得るには、どのような本やサイトで勉強すればいいのでしょうか?