加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP原生函数一定好吗?

发布时间:2020-12-13 02:15:23 所属栏目:PHP教程 来源:网络整理
导读:《PHP原生函数一定好吗?》要点: 本文介绍了PHP原生函数一定好吗?,希望对您有用。如果有疑问,可以联系我们。 本日在阅读kohana源码中的Arr类的时候发现了这样一个函数 PHP学习 代码如下: ?/** ? * Fill an array with a range of numbers. ? * ? *???? /

《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();
??for ($i = $step; $i <= $max; $i += $step)
??{
???$array[$i] = $i;
??}

??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()
(0,3)?5.155E-3s?27.5530M?1.907E-5s?0.1241M
(0,2)?7.479E-3s?40.2688M?1.811E-5s?0.1241M
(0,1000,1)?8.16E-5s?0.1620M?2.649E-5s?0.1241M
??? 从表中可以看出产生随机数时自定义函数比原生函数要节省内存和时间,而且原生函数在生成大量随机数时特别耗内存,消耗时间也特别多,而自定义函数在这方面则表现得好,产生的内存和消耗的时间基本稳定,看来前面那位前辈说的不必定完全正确哦,但是这里要注意我们这里的自定义函数只能生成数字,而原生的range还可以产生字母的,但是我想这自定义函数添加个字母应该也不会太难~

??? 看来kohana官方对range这个函数很是了解,对php内核中该函数的繁杂度也很了解,所以这个小优化才可以做这么好,太厉害了!!!

《PHP原生函数一定好吗?》是否对您有启发,欢迎查看更多与《PHP原生函数一定好吗?》相关教程,学精学透。编程之家 52php.cn为您提供精彩教程。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读