私は、単一のanonymous functionに複数の参照を格納する配列があります。PHPエンジンはループ内で匿名関数を最適化しますか?
$fns = array();
//some code
$fn = function(){
echo 'this is closure 12345... < 67890';
// etc etc..
};
for($x=12345; $x<67890; ++$x){
$fns[$x] = $fn;
}
としては、我々だけ無名関数を作成している、見ることができます。
関数宣言をループ内に置くとどうなりますか? :
$fns = array();
//some code
for($x=12345; $x<67890; ++$x){
$fns[$x] = function(){
echo 'this is closure 12345... < 67890';
// etc etc..
};
}
エンジンは、1つのオブジェクトのみを作成する必要があることを認識するほどスマートですか?
上記のコードは1つのオブジェクトのみを作成するか、1つのオブジェクトを作成しますか反復ごとに?
(質問はHHVMおよびZend Engineの両方を対象としています。)
あなたはそれをプロファイルしましたか? 300オブジェクトは何もありません。あなたはその少数のオブジェクトとの違いを測定することさえできないでしょう。数百万のオブジェクトを作成しない限り、その差はごくわずかです。 – Gordon
@Gordon http://stackoverflow.com/questions/239136/fastest-way-to-convert-string-to-integer-in-php#comment-4932053 – Pacerier
http://c2.com/cgi/wiki?PrematureOptimization – Gordon