Tutorials

Laadtijd beperken

Het beperken van de laadtijd doet veel. Geef nu zelf toe, je komt liever op een website die onmiddelijk geladen is, dan eentje die er 2 seconden over doet! Een online voorbeeld: http://gdx.be/time.vars.php

Pagina 1

Met {} sneller dan zonder!

Zelf vindt ik het ook redelijk raar, aangezien er toch minder karakters in je script staan! Toch zal ik hier het tegendeel bewijzen. Gebruikmaken van { en } achter bvb een for-loop, is sneller dan deze niet te gebruiken!

De testresultaten:
Variabele zonder quotes ($var), zonder {} van for lus: 0.00064492225646973ms
Variabele zonder quotes ($var), met {} van for lus: 0.00057601928710938ms

Beide maken gebruik van de zelfde parameters in de for-lus, en maken gebruik van dezelfde variabele. Ze verschillen enkel in de haakjes { }

Het script staat op de laatste pagina!
Pagina 2

Variabele buiten quotes!

Variabele buiten quotes is niet alleen veel ordelijker en overzichtelijker, maar het is ook bijna dubbel zo snel!!!

Hoewel de meeste PHP Programmeurs hun variabele al buiten quotes plaatsen, vond ik het toch de moeite ook dit resultaat even te vermelden, vooral voor beginnende PHP programmeurs, of voor mensen die de wijze raad van andere niet opvolgden...

Variabele zonder quotes ($var), zonder {} van for lus: 0.00064492225646973ms
Variabele binnen quotes ("$var"), zonder {} van for lus: 0.001662015914917ms
Variabele buiten quotes ("".$var.""), zonder {} van for lus: 0.0010619163513184ms

Nu, het verband van tijd tussen 2 en 3 klopt volledig, maar tussen 1 en 2 of 1 en 3 niet volledig. Ik het het script ligtjes aangepast (omdat "".var."" nogal overbodig is, heb ik er een korte string voorgezet).

However, als je enkel een variabele moet printen kan je best GEEN quotes gebruiken. Moet je toch een variabele in een string printen, dan zet je deze BUITEN de quotes, of gebruik je sprintf!
Pagina 3

integers trager dan strings!

Een integer (numeriek) printen neemt meer tijd in beslag dan een string (tekst) te printen, wat nu ook logisch is.
Als je een integer wilt printen, zal PHP deze eerst converteren naar een string.

Variabele zonder quotes, integer als string, zonder {} van for lus: 0.0006251335144043ms
Variabele zonder quotes, integer, zonder {} van for lus: 0.00093293190002441ms

Als je dus bvb een vaste waarde 2 moet printen, en deze zit in een variabele, kan je de 2 best binnen quotes zetten (LET OP: enkel om te printen, niet om te tellen!).
Pagina 4

Het script zelf

Het script doet elke actie 1000x. Het meet hoelang deze 1000 acties samen duren, en gebruikt deze tijd.

Alle output wordt opgevangen in een object, dat gewoon terug afgebroken wordt (zodat de testresultaten bovenaan staan, en we toch een objectief resultaat hebben!)

<?php
ob_start();
function getmicrotime ()
{
	$microtime = explode (' ', microtime());
	return $microtime[0] + $microtime[1];
}

$var1 = 'Dit is string nr 1';
$var2 = '9043534';
$var3 = 9043534;

$start = getmicrotime();
for ($i = 1; $i < 1000; $i++)
	echo $var1;	
$time1 = getmicrotime() - $start;

$start = getmicrotime();
for ($i = 1; $i < 1000; $i++)
{
	echo $var1;
}
$time2 = getmicrotime() - $start;

$start = getmicrotime();
for ($i = 1; $i < 1000; $i++)
	echo "hier staat: $var1";			
$time3 = getmicrotime() - $start;

$start = getmicrotime();
for ($i = 1; $i < 1000; $i++)
	echo "hier staat: ".$var1."";			
$time4 = getmicrotime() - $start;

$start = getmicrotime();
for ($i = 1; $i < 1000; $i++)
	echo $var2;			
$time5 = getmicrotime() - $start;

$start = getmicrotime();
for ($i = 1; $i < 1000; $i++)
	echo $var3;			
$time6 = getmicrotime() - $start;


$content = ob_get_contents();
ob_end_clean();

echo ('Onderstaande gegevens geven de tijd in ms weer:<br />');
echo ('Variabele zonder quotes ($var), zonder {} van for lus: '.$time1.'ms<br />');
echo ('Variabele zonder quotes ($var), met {} van for lus: '.$time2.'ms<br />');
echo ('Variabele binnen quotes ("$var"), zonder {} van for lus: '.$time3.'ms<br />');
echo ('Variabele buiten quotes ("".$var.""), zonder {} van for lus: '.$time4.'ms<br />');
echo ('Variabele zonder quotes, integer als string, zonder {} van for lus: '.$time5.'ms<br />');
echo ('Variabele zonder quotes, integer, zonder {} van for lus: '.$time6.'ms<br />');
if($_GET['output'] == 'display')
	echo '<br /><br />'.$content;
else
	echo '<br /><br />Met output? <a href="?output=display">Klik hier</a>';
?>

Reacties

0
Nog geen reacties.