Home >Backend Development >PHP Tutorial >Use PHP native functions whenever possible? ,php function_PHP tutorial

Use PHP native functions whenever possible? ,php function_PHP tutorial

WBOY
WBOYOriginal
2016-07-13 10:12:21753browse

Use PHP native functions as much as possible? , php function

Today I found such a function when reading the Arr class in the kohana source code

	/**
	 * 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性能优化的说法&mdash;&mdash;PHP为我们提供了那么多的原声函数,我们尽量用原生函数解决问题。于是我就做了个测试,看看php原生函数性能究竟比自己写的快多少。要测试的函数有原生函数range()和上面的函数_range(),这里加下划线开始是因为重写原声函数range()会报错&ldquo;Fatal error: Cannot redeclare range() in&rdquo;。
        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:

Use PHP native functions whenever possible? ,php function_PHP tutorial

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 than native functions when generating random numbers. Moreover, native functions consume a lot of memory and time when generating a large number of random numbers. Custom functions are here. On the other hand, it performs well. 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 still has It can generate letters, but I think it shouldn’t be too difficult to add letters with this custom function~

It seems that kohana officials have 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! ! !

send Me~

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/923414.htmlTechArticleUse PHP native functions as much as possible? , PHP function I found such a function when reading the Arr class in the kohana source code today /** * Fill an array with a range of numbers. * * // Fill a...
Statement:
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