在传递到函数之前创建对象或在函数内创建对象实例之间的 PHP 性能


Php performance between create object before pass to function or create object instance inside function

我想知道"Create object and pass it to function""Create object inside function"之间的性能- 我认为当在函数内创建对象时,更好的原因是在函数完成后,所有本地变量都会被释放。所以我认为 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();
    }
}

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

也许这篇文章可以帮助你:PHP 在函数结束后会立即释放局部变量吗?

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