在函数内创建新类或在PHP中将其作为参数传递是否更快

时间:2016-10-26 17:39:36

标签: php performance oop

我有一个在一些函数中彼此独立使用的类。所以我的问题是:将启动的类作为参数传递给函数或者每次调用函数时创建新实例是否更快?

像这样:

$class_a = new Class_a;

function rnd_fun($class_a){
... do stuff...
}

或者像这样:

function rnd_fun(){
$class_a = new Class_a;
... do stuff...
unset($class_a);
}

1 个答案:

答案 0 :(得分:2)

我尝试做基准测试,这些是使用它的结果 非常有创意的课程

$class_a = new Class_a;

$i = 0;
while($i < 10000){
    test($class_a);
    $i++;
}

function test($class_a){
        $class_a->setVar("Geronimo", "72.1");
        $class_a->wasteTime();
    }

通过将类作为参数传递,我使用此代码获得了大约0.46秒的内容:

$i = 0;
while($i < 10000){
    test();
    $i++;
}

function test(){
    $class_a = new Class_a;
    $class_a->setVar("Geronimo", "72.1");
    $class_a->wasteTime();
    unset($class_a);
}

这是通过在函数内启动一个新类:

{{1}}

我必须指出,第二种方法执行的时间稍长(大约0.47s)。

然而,我认为两者之间的差异可以忽略不计,因为这两次迭代的速度大致相同,并且在一段平均代码中它们的延迟不会很明显。