Neden başvurulan değeri (vb saymak gibi strlen gibi) çok yavaş bir işlev arıyor?

0 Cevap php

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?

0 Cevap