PHP Sihirli daha hızlı sadece sınıf özniteliği ayarlayarak?

0 Cevap php

Peki, tam olarak değil, ama burada bir örnektir. Herkes B ve C arasındaki farkı açıklayabilir misiniz? Nasıl dinamik olarak sadece nitelik tanımı değerini ayarlamak yerine bir değerini ayarlamak için sihirli bir işlevi kullanmak için daha hızlı olabilir?

İşte bazı kod:

[root@vm-202-167-238-17 ~]# cat test.php; for d in A B C; do echo "------"; ./test.php $d; done;
#!/usr/bin/php
<?php

$className = $argv[1];

class A
{
    public function __get($a)
    {
        return 5;
    }
}

class B
{
    public $a = 5;
}

class C
{
    public function __get($a)
    {
        $this->a = 5;

        return 5;
    }
}

$a = new $className;

$start = microtime(true);

for ($i=0; $i < 1000000; $i++)
    $b = $a->a;

$end = microtime(true);

echo (($end - $start) * 1000) ." msec\n";

------
598.90794754028 msec
------
205.48391342163 msec
------
189.7759437561 msec

0 Cevap