Ben sadece PHP çok garip bir şey buldum.
Ben referans bir işleve bir değişken geçmek, ve sonra bunun üzerine bir işlevi çağırmak, o incredibly yavaş.
Iç işlev çağrısı ve değişken üzerinde size döngü büyükse o değişken değeri tarafından geçirilir ise daha yavaş birçok büyüklük olabilir.
Örnek:
<?php
function TestCount(&$aArray)
{
$aArray = range(0, 100000);
$fStartTime = microtime(true);
for ($iIter = 0; $iIter < 1000; $iIter++)
{
$iCount = count($aArray);
}
$fTaken = microtime(true) - $fStartTime;
print "took $fTaken seconds\n";
}
$aArray = array();
TestCount($aArray);
?>
Bu sürekli (PHP 5.3) benim makinede çalıştırmak için yaklaşık 20 saniye sürer.
Ben değere geçmek için işlevini değiştirmek Ama eğer (yani function TestCount($aArray)
yerine function TestCount(&$aArray)
), daha sonra da yaklaşık 2ms çalışır - literally 10,000 times faster!
Aynı tür strlen
olarak ve kullanıcı tanımlı işlevler için diğer yerleşik işlevleri için geçerlidir.
Ne oluyor?