php 自定义函数和原生函数执行效率问题
2014-12-08 15:13
92 查看
从网上看到的,有些时候原生函数的效率可能没有自定义的函数高
例如range函数,用它来初始化一个键值与键名相等的,且键名差值相同的数组,原生函数使用效率反而不高,
这可能是因为range函数不仅仅实现了这一种需求,这个函数还可以接受一些其他参数去执行算法,返回值
所以当我们仅需要某个功能时,可能使用自己的函数会运行更快,原生函数会经过各种判断,才能执行想要的方法(自己想的,可能不对)
例:
function ranges($step = 5, $max = 20)
{
if ($step < 1)
return array();
$array = array();
for ($i = $step; $i <= $max; $i += $step)
{
$array[$i] = $i;
}
return $array;
}
$time['begin'] = microtime(true);
//$tmp = range(0,1000000,3);
$tmp = ranges(0,1000000,3);
$time['end'] = microtime(true);
echo $time['end'] - $time['begin'].'s'."\r";
echo (memory_get_peak_usage())."M";
自定义:
7.8678131103516E-6s 0.59011840820312M
原生
0.069043874740601s 68.172889709473M
例如range函数,用它来初始化一个键值与键名相等的,且键名差值相同的数组,原生函数使用效率反而不高,
这可能是因为range函数不仅仅实现了这一种需求,这个函数还可以接受一些其他参数去执行算法,返回值
所以当我们仅需要某个功能时,可能使用自己的函数会运行更快,原生函数会经过各种判断,才能执行想要的方法(自己想的,可能不对)
例:
function ranges($step = 5, $max = 20)
{
if ($step < 1)
return array();
$array = array();
for ($i = $step; $i <= $max; $i += $step)
{
$array[$i] = $i;
}
return $array;
}
$time['begin'] = microtime(true);
//$tmp = range(0,1000000,3);
$tmp = ranges(0,1000000,3);
$time['end'] = microtime(true);
echo $time['end'] - $time['begin'].'s'."\r";
echo (memory_get_peak_usage())."M";
自定义:
7.8678131103516E-6s 0.59011840820312M
原生
0.069043874740601s 68.172889709473M
相关文章推荐
- 2个自定义的PHP in_array 函数,解决大量数据判断in_array的效率问题
- 2个自定义的PHP in_array 函数,解决大量数据判断in_array的效率问题
- 2个自定义的PHP in_array 函数,解决大量数据判断in_array的效率问题
- 关于php页面最大执行时间问题(set_time_limit函数在windows下不起作用的解决)
- PHP的array_diff()函数在处理大数组时的效率问题
- PHP各种引入(读取)文件函数的执行效率include require fpassthru readfile等的性能比较
- 提高php的执行效率问题
- PHP 函数执行效率的小比较
- PHP uniqid函数执行缓慢的问题
- 解决PHP在Windows Server 2008下执行效率缓慢的问题。
- PHP执行函数超时,执行数据库超时等问题解决方法(9元包邮)
- 关于PHP的is_a()函数执行代码的问题
- PHP各种引入文件函数的执行效率include require fpassthru readfile
- PHP ThinkPHP 执行原生sql语句(自定义的sql语句)
- php 自定义求数组差集,效率比自带的array_diff函数还要快(转)
- 关于php页面最大执行时间问题(set_time_limit函数在windows下不起作用的解决)
- 函数执行效率的小比较----PHP 函数学习
- php的exec()函数执行外部Linux脚本问题
- PHP各种引入文件函数的执行效率include require fpassthru readfile