Are PHP native functions necessarily good? , PHP native function_PHP tutorial

WBOY
Release: 2016-07-13 10:12:09
Original
888 people have browsed it

Are PHP native functions necessarily good? , PHP native function

I discovered such a function today when I was reading the Arr class in the kohana source code

Copy code The code is as follows:

/**
  * 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;
}

When I saw this, I found that PHP’s native functions can also achieve this function. Suddenly I thought of what a senior said about PHP performance optimization that I had heard before - PHP provides us with so many native functions. We try to use native functions to solve problems. So I did a test to see how much faster the performance of PHP's native functions is compared to the one I wrote myself. The functions to be tested include the native function range() and the above function _range(). The underline is added here because overriding the native function range() will report an error "Fatal error: Cannot redeclare range() in".

Copy code The code is as follows:

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,1000000,3);
$time['end'] = microtime(true);
echo $time['end'] - $time['begin'].'s'."r";
echo (memory_get_peak_usage()/1024/1024)."M";

Tested using native functions and custom functions respectively. When generating all multiples of 3 between 0 and 1000000, the results were beyond my expectations:

The first is the result of using native functions:

The following is the result of using a custom function:

In order to make the results more accurate, I am making a statistical chart

Number of statistics Native function range() Custom function _range()
(0,1000000,3) 5.155E-3s 27.5530M 1.907E-5s 0.1241M
(0,1000000,2) 7.479E-3s 40.2688M 1.811E-5s 0.1241M
(0,1000,1) 8.16E-5s 0.1620M 2.649E-5s 0.1241M
It can be seen from the table that custom functions save memory and time when generating random numbers compared to native functions. Moreover, native functions consume a lot of memory and time when generating a large number of random numbers, while custom functions perform better in this regard. Well done, the memory generated and the time consumed are basically stable. It seems that what the previous senior said may not be completely correct, but it should be noted here that our custom function here can only generate numbers, while the native range can also generate letters. Yes, but I think it shouldn’t be too difficult to add a letter to this custom function~

It seems that the Kohana official has a good understanding of the range function and the complexity of this function in the PHP kernel. That’s why this small optimization can do so well. It’s amazing! ! !

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/923904.htmlTechArticleMust PHP native functions be good? , PHP native function. Today I found such a function when reading the Arr class in the kohana source code. Copy the code. The code is as follows: /** * Fill an array with a r...
Related labels:
php
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!