测试new 和call_user_function()和call_user_function_array()执行效率问题

本文通过实验对比了PHP中new实例化对象调用静态方法、使用call_user_func及call_user_func_array三种方式的性能差异。结果显示,直接new的方式效率最低。
namespace Foobar;
class MyClass{
    static public function callback( $var){
        for ( $i = 0; $i < $var; $i++ ){
            $b='';
        }
    }
}
$t1 = microtime();
$obj = new MyClass();
$obj::callback(100);
$t2 = microtime();
list( $usec, $sec ) = explode( ' ', $t1 );
$t1 = (float)$usec + (float)$sec;
list( $usec, $sec ) = explode( ' ', $t2 );
$t2 = (float)$usec + (float)$sec;
echo 'new : ' . ( $t2 - $t1 ) . '<br />';
$t1 = microtime();
call_user_func(__NAMESPACE__ .'\MyClass::callback',100 );
$t2 = microtime();
list( $usec, $sec ) = explode( ' ', $t1 );
$t1 = (float)$usec + (float)$sec;
list( $usec, $sec ) = explode( ' ', $t2 );
$t2 = (float)$usec + (float)$sec;
echo 'call_user_func : ' . ( $t2 - $t1 ).'<br />';;

$t1 = microtime();
call_user_func_array(__NAMESPACE__ .'\MyClass::callback', array(100));
$t2 = microtime();
list( $usec, $sec ) = explode( ' ', $t1 );
$t1 = (float)$usec + (float)$sec;
list( $usec, $sec ) = explode( ' ', $t2 );
$t2 = (float)$usec + (float)$sec;
echo 'call_user_func_array : ' . ( $t2 - $t1 );

exit;

new : 1.4066696166992E-5
call_user_func : 5.9604644775391E-6
call_user_func_array : 4.0531158447266E-6


在PHP 7.0.2环境下


用时从多到少。。。。 new < call_user_func() <call_user_function_array()


然后,,,直接new 效率是最低的??奇了怪了....

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值