传递给函数之前创建对象之间的Php性能或者在函数内部创建对象实例

时间:2016-07-14 10:29:43

标签: php

我想知道"Create object and pass it to function""Create object inside function"之间的表现 - 我认为在函数内部创建对象后更好地导致函数完成后,将释放所有局部var。所以我认为2优于1。

1) $a = new A();
test($a);

2) test1(){$a=new A(); ..}

但是我想知道函数是否在循环中调用,所以2个案例每次都会创建对象。也许它掠夺更多的资源,时间比1? 在这里我的测试代码,但也许它不是完美的回答

$start_mem = memory_get_usage();

var_dump($start_mem);
$start = microtime(true);
for($i=0; $i < 10000; $i++) {
  test();
}
$end = microtime(true);
$end_mem = memory_get_usage();
echo "Timne: ". ($end - $start). "\n";
var_dump($end_mem);
echo "Mem: ". ($end_mem - $start_mem). "\n";
######### test 2
// $start_mem = memory_get_usage();
// var_dump($start_mem);
// $start = microtime(true);
// $obj = new PingSitemap();
// for($i=0; $i <10000; $i++) {
//     test1($obj);
// }

// $end = microtime(true);
// $end_mem = memory_get_usage();
// echo "Timne: ". ($end - $start). "\n";
// var_dump($end_mem);
// echo "Mem: ". ($end_mem - $start_mem). "\n";

function test() {
    $obj = new PingSitemap();
    for($i=0; $i < 1000; $i++) {
        $obj->counta();
    }
}

function test1($obj) {
    for($i=0; $i < 1000; $i++) {
        $obj->counta();
    }
}

1 个答案:

答案 0 :(得分:1)

我认为第二个更好,因为它是一个局部变量,所以当脚本到达函数结束时,变量将被销毁。

也许这篇文章可以帮助您:Does PHP free local variables immediately after the function ends?

另一方面,如果你想做一个循环,我想你也一样。