我想知道"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();
}
}
答案 0 :(得分:1)
我认为第二个更好,因为它是一个局部变量,所以当脚本到达函数结束时,变量将被销毁。
也许这篇文章可以帮助您:Does PHP free local variables immediately after the function ends?
另一方面,如果你想做一个循环,我想你也一样。