Mam tablicę, która przechowuje wiele odwołań do jednego anonymous function:Czy silnik PHP optymalizuje anonimowe funkcje w pętlach?
$fns = array();
//some code
$fn = function(){
echo 'this is closure 12345... < 67890';
// etc etc..
};
for($x=12345; $x<67890; ++$x){
$fns[$x] = $fn;
}
Jak widać, tworzymy tylko jedenanonimową funkcję.
Co jeśli wstawimy deklarację funkcji do pętli? :
$fns = array();
//some code
for($x=12345; $x<67890; ++$x){
$fns[$x] = function(){
echo 'this is closure 12345... < 67890';
// etc etc..
};
}
Czy silnik jest na tyle inteligentny, że rozpoznaje, że potrzebny jest tylko jeden obiekt?
Czy powyższy kod tworzy tylko jeden obiekt lub tworzy jeden obiekt w iteracji?
(pytanie jest skierowane zarówno HHVM i Zend Engine.)
Czy profil go? 300 obiektów to nic. Prawdopodobnie nie będziesz w stanie zmierzyć różnicy z tymi kilkoma obiektami. Dopóki nie zaczniesz tworzyć milionów obiektów, różnica jest znikoma. – 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