Wann immer möglich native PHP-Funktionen verwenden?

WBOY
Freigeben: 2016-08-08 09:32:58
Original
1133 Leute haben es durchsucht

Eine solche Funktion habe ich heute entdeckt, als ich die Arr-Klasse im Kohana-Quellcode gelesen habe

	/**
	 * 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;
	}
Nach dem Login kopieren
 
Nach dem Login kopieren
    看到这里的时候,我发现php的原声函数也是可以实现这个功能的,忽然想到之前听到过的一个前辈关于php性能优化的说法——PHP为我们提供了那么多的原声函数,我们尽量用原生函数解决问题。于是我就做了个测试,看看php原生函数性能究竟比自己写的快多少。要测试的函数有原生函数range()和上面的函数_range(),这里加下划线开始是因为重写原声函数range()会报错“Fatal error: Cannot redeclare range() in”。
Nach dem Login kopieren
        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";
Nach dem Login kopieren

Getestet mit nativen bzw. benutzerdefinierten Funktionen. Bei der Generierung aller Vielfachen von 3 zwischen 0 und 1.000.000 übertrafen die Ergebnisse meine Erwartungen:

Das erste ist das Ergebnis der Verwendung nativer Funktionen:

Das Folgende ist das Ergebnis der Verwendung einer benutzerdefinierten Funktion:

Um die Ergebnisse genauer zu machen, erstelle ich ein statistisches Diagramm

统计次数 原生函数range() 自定义函数_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

Aus der Tabelle geht hervor, dass benutzerdefinierte Funktionen beim Generieren von Zufallszahlen Speicher und Zeit sparen. Darüber hinaus verbrauchen native Funktionen viel Speicher und Zeit, wenn sie eine große Anzahl von Zufallszahlen generieren. Andererseits ist die Leistung des generierten Speichers und die verbrauchte Zeit grundsätzlich stabil. Es scheint, dass das, was der vorherige Senior gesagt hat, möglicherweise nicht ganz korrekt ist, aber es sollte hier beachtet werden, dass unsere benutzerdefinierte Funktion hier nur Zahlen generieren kann. Während der native Bereich immer noch über die Möglichkeit verfügt, Buchstaben zu generieren, denke ich, dass es nicht allzu schwierig sein sollte, mit dieser benutzerdefinierten Funktion Buchstaben hinzuzufügen~

Es scheint, dass Kohana-Beamte ein gutes Verständnis für die Bereichsfunktion und die Komplexität dieser Funktion im PHP-Kernel haben. Deshalb kann diese kleine Optimierung so gut funktionieren. ! !

Schick mir~

Das Obige stellt vor, wie man die nativen PHP-Funktionen so weit wie möglich nutzt. Ich hoffe, dass es Freunden, die sich für PHP-Tutorials interessieren, hilfreich sein wird, einschließlich relevanter Inhalte.

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage