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 效率是最低的??奇了怪了....
测试new 和call_user_function()和call_user_function_array()执行效率问题
最新推荐文章于 2022-07-28 18:43:36 发布
本文通过实验对比了PHP中new实例化对象调用静态方法、使用call_user_func及call_user_func_array三种方式的性能差异。结果显示,直接new的方式效率最低。
267

被折叠的 条评论
为什么被折叠?



