PHP Performans: Referans vs kopyalayın

0 Cevap php

Hey orada. Bugün ben onlara başvurular oluşturarak vs kopyalama değişkenlerin performansını karşılaştırmak için küçük bir kriter senaryo yazdı. Ben örneğin büyük diziler için başvurular oluşturarak tüm dizi kopyalama çok daha yavaş olacağını, bekliyordum. İşte benim kriter kodu:

<?php
    $array = array();

    for($i=0; $i<100000; $i++) {
        $array[] = mt_rand();
    }

    function recursiveCopy($array, $count) {
        if($count === 1000)
            return;

        $foo = $array;
        recursiveCopy($array, $count+1);
    }

    function recursiveReference($array, $count) {
        if($count === 1000)
            return;

        $foo = &$array;
        recursiveReference($array, $count+1);
    }

    $time = microtime(1);
    recursiveCopy($array, 0);
    $copyTime = (microtime(1) - $time);
    echo "Took " . $copyTime . "s \n";


    $time = microtime(1);
    recursiveReference($array, 0);
    $referenceTime = (microtime(1) - $time);
    echo "Took " . $referenceTime . "s \n";

    echo "Reference / Copy: " . ($referenceTime / $copyTime);

I got gerçek sonuç recursiveReference sürece recursiveCopy gibi yaklaşık 20 kez (!) Aldı, oldu.

Biri bu PHP davranış açıklayabilir misiniz?

0 Cevap