<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ebene7 &#187; Performance</title>
	<atom:link href="http://blog.ebene7.com/schlagwort/performance/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.ebene7.com</link>
	<description></description>
	<lastBuildDate>Tue, 04 Jun 2013 18:57:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>range() vs. array_push()</title>
		<link>https://blog.ebene7.com/2010/06/26/range-vs-array-push/</link>
		<comments>https://blog.ebene7.com/2010/06/26/range-vs-array-push/#comments</comments>
		<pubDate>Sat, 26 Jun 2010 12:00:09 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Qualitätssicherung]]></category>
		<category><![CDATA[Array]]></category>
		<category><![CDATA[Benchmark]]></category>
		<category><![CDATA[Performance]]></category>

		<guid isPermaLink="false">http://blog.ebene7.com/?p=990</guid>
		<description><![CDATA[Gestern habe ich Saschas Artikel &#8220;Füllen von array-Werten in Reihenfolge: for vs range&#8221; entdeckt, in dem er die Performance der PHP eigenen Funktion range() mit der von array_push() in einer for-Schleife vergleicht. Die allgemeine Erwartung ist sicher, dass range() schneller &#8230; <a href="https://blog.ebene7.com/2010/06/26/range-vs-array-push/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Gestern habe ich Saschas Artikel &#8220;<a href="http://softwareentwickler.blogspot.com/2010/06/fullen-von-array-werten-in-reihenfolge.html" target="_blank">Füllen von array-Werten in Reihenfolge: for vs range</a>&#8221; entdeckt, in dem er die Performance der PHP eigenen Funktion range() mit der von array_push() in einer for-Schleife vergleicht.</p>
<p>Die allgemeine Erwartung ist sicher, dass range() schneller ist und umso mehr überraschte zumindest mich sein Ergebnis.</p>
<p>Also habe ich schnell einen kleinen Test dafür geschrieben und dabei eine weitere Überraschung erlebt.</p>
<p><span id="more-990"></span>Zunächst mein Test-Script, mit dem ich jede Möglichkeit 1000 Mal probiere, um vergleichbare Zahlen zu bekommen. Neben <code>range()</code> und <code>array_push()</code> habe ich auch noch den Operator [] getestet.</p>
<pre><code>&lt;?php
$numLoops = 1000;

$total = 0;
for ($i = 0; $i &lt; $numLoops; $i++) {
  $start = microtime(true);

  $range = range(1,20); 

  $total += microtime(true) - $start;
}

echo 'Gesamtzeit range() = ' . $total . '&lt;br/&gt;';

$total = 0;
for ($i = 0; $i &lt; $numLoops; $i++) {
  $start = microtime(true);

  $range = array();
  for ($j = 1; $j &lt;= 20; $j++) {
    array_push($range, $j);
  }

  $total += microtime(true) - $start;
}

echo 'Gesamtzeit Schleife/array_push() = ' . $total . '&lt;br/&gt;'; 

$total = 0;
for ($i = 0; $i &lt; $numLoops; $i++) {
  $start = microtime(true);

  $range = array();
  for ($j = 1; $j &lt;= 20; $j++) {
    $range[] = $j;
  }

  $total += (microtime(true) - $start);
}

echo 'Gesamtzeit Schleife/[] = ' . $total . '&lt;br/&gt;';</code></pre>
<p>Ein recht gutes Ergebnis sieht so aus und man kann schon sehr gut die Unterschiede sehen.</p>
<pre>Gesamtzeit range()               = 0.0055239200592041
Gesamtzeit Schleife/array_push() = 0.015237808227539
Gesamtzeit Schleife/[]           = 0.0075914859771729</pre>
<p>In diesem Test brauchte die Schleife mit <code>array_push()</code> doppelt so lange wie die mit dem  []-Oparator und sogar dreimal länger als <code>range()</code>.</p>
<p>Das zeigt, dass man sich doch auf die PHP-eigenen Funktionen verlassen kann und dass Faulheit manchmal auch belohnt wird, wenn man statt <code>array_push()</code> nur <code>[]</code> verwendet.</p>
]]></content:encoded>
			<wfw:commentRss>https://blog.ebene7.com/2010/06/26/range-vs-array-push/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
