PHP原生函数一定好吗?
《PHP原生函数一定好吗?》要点: 本日在阅读kohana源码中的Arr类的时候发现了这样一个函数PHP学习
代码如下:
?/** ? * Fill an array with a range of numbers. ? * ? *???? // Fill an array with values 5,10,15,20 ? *???? $values = Arr::range(5,20); ? * ? * @param?? integer $step?? stepping ? * @param?? integer $max??? ending number ? * @return? array ? */ ?public static function range($step = 10,$max = 100) ?{ ??if ($step < 1) ???return array(); ??$array = array(); ??return $array; ??? 看到这里的时候,我发现php的原生函数也是可以实现这个功能的,忽然想到之前听到过的一个前辈关于php性能优化的说法――PHP为我们提供了那么多的原生函数,我们尽量用原生函数办理问题.于是我就做了个测试,看看php原生函数性能究竟比自己写的快多少.要测试的函数有原生函数range()和上面的函数_range(),这里加下划线开始是因为重写原生函数range()会报错“Fatal error: Cannot redeclare range() in”.
代码如下:
?
?function _range($step = 10,$max = 100) ?{ ??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 = _range(0,3); ?$time['end']?? = microtime(true); ?echo $time['end'] - $time['begin'].'s'."r"; ?echo (memory_get_peak_usage()/1024/1024)."M"; ??? 分别用原生函数和自定义函数进行测试,在发生0~1000000之间所有的3的倍数时,结果出乎我的意料: 首先是使用原生函数的成果:
下面是使用自定义函数的成果:
为了结果比拟准确,我在做个图表统计 统计次数?原生函数range()?自定义函数_range() ??? 看来kohana官方对range这个函数很是了解,对php内核中该函数的繁杂度也很了解,所以这个小优化才可以做这么好,太厉害了!!! 《PHP原生函数一定好吗?》是否对您有启发,欢迎查看更多与《PHP原生函数一定好吗?》相关教程,学精学透。编程之家 52php.cn为您提供精彩教程。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |