我想知道"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 在函数结束后会立即释放局部变量吗?
另一方面,如果你想做一个循环,我想和你一样。