[php] ongebruikte functie -> wel extra 'load'?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Stel ik maak een php-file met daarin een x-tal functies (lees: 10-tallen functies). En ik ga deze file in al mn webpagina's includen zodat ik de functie's aan kan roepen als dit nodig is.

Is dit dan van invloed op de laadtijd van de pagina's?
De eigenlijke vraag is dus; wordt een php-pagina trager als je er (bijv) 30 ongebruikte functie's in zet?

En daarbij de vraag, is dit een goede methode? Want wat ik eigenlijk wil bereiken is een algemene file in mn sites stoppen waarin allemaal handige functies zitten. Dus functie's om formulieren op te stellen, om data uit formulieren te verwerken enz.

Ik heb namelijk al een paar jaar het gevoel dat ik iedere week wel x-tal keren functie's / pagina's schrijf die ik al eerder heb geschreven!

Acties:
  • 0 Henk 'm!

Verwijderd

Natuurlijk gaat hij die code dan parsen op eventuele fouten, maar als jij die functies verder niet laat uitvoeren door ze aan te roepen heeft het geen invloed op de laadtijd..

Acties:
  • 0 Henk 'm!

  • Helmet
  • Registratie: Januari 2002
  • Laatst online: 21-08 15:00
interessant topic :)
ik denk niet dat het je site trager maakt omdat je de functies slechts "include" ik heb ook een layer met eigen functies die ik vaak gebruik en die include ik oo

Probeer het gewoon, bereken de executietijd van twee identieke scripts, eentje met functies die je niet gebruikt en de ander zonder die functies

meteen ff de daad bij het woord gevoegd
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?
$sStart = microtime();
function infloop()
{
 $c = 0;
 for ($i=0;$i=-1;$i++) { $c++;}
}

for ($i = 0;$i < 10;$i++) { echo 'dit is slechts een test<br />';}
$sEnd = microtime();
$aA = explode(' ',$sStart.' '.$sEnd);
printf('%03.8f Seconds<br>',($aA[2]+$aA[3])-($aA[0]+$aA[1]));
exit;
?>

executietijd: 000.00014102 Seconds

PHP:
1
2
3
4
5
6
7
8
<?
$sStart = microtime();
for ($i = 0;$i < 10;$i++) { echo 'dit is slechts een test<br />';}
$sEnd = microtime();
$aA = explode(' ',$sStart.' '.$sEnd);
printf('%03.8f Seconds<br>',($aA[2]+$aA[3])-($aA[0]+$aA[1]));
exit;
?>

executietijd: 000.00013995 Seconds

Er is dus wel verschil maar dat vind ik te verwaarlozen :)

[ Voor 35% gewijzigd door Helmet op 31-07-2003 17:47 . Reden: wat aangepast :P ]

Icons are overrated


Acties:
  • 0 Henk 'm!

  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

Helmet schreef op 31 July 2003 @ 17:44:
Er is dus wel verschil maar 0.00002 seconden vind ik te verwaarlozen :)
Ik ben bang dat deze test niet helemaal sluitend is, het parsen van de code vindt waarschijnlijk in z'n geheel voor de uitvoering plaats en daar begin je pas te meten.

Who is John Galt?


Acties:
  • 0 Henk 'm!

  • Helmet
  • Registratie: Januari 2002
  • Laatst online: 21-08 15:00
justmental schreef op 31 July 2003 @ 17:47:
[...]

Ik ben bang dat deze test niet helemaal sluitend is, het parsen van de code vindt waarschijnlijk in z'n geheel voor de uitvoering plaats en daar begin je pas te meten.
Dan vraag ik me af hoe het komt dt er verschil in uitvoertijd is tussen de twee scriptjes

Icons are overrated


Acties:
  • 0 Henk 'm!

  • simon
  • Registratie: Maart 2002
  • Laatst online: 11:40
justmental schreef op 31 juli 2003 @ 17:47:
[...]

Ik ben bang dat deze test niet helemaal sluitend is, het parsen van de code vindt waarschijnlijk in z'n geheel voor de uitvoering plaats en daar begin je pas te meten.
daarnaast moet je niet alleen naar de parse-time maar ook naar de load kijken..

Maar stel dat ik een klasse include met veel functies waarvan ik er bijv. 1 gebruik, wordt mijn parse-time/load dan 'hoger' (dus echt hoger) dan wanneer ik een klasse include met 1 functie?
Helmet schreef op 31 juli 2003 @ 17:48:
[...]


Dan vraag ik me af hoe het komt dt er verschil in uitvoertijd is tussen de twee scriptjes
das de tijd tussen twee acties.. Ik geloof dat je dat niet echt 'de parse-time' kan noemen..

[ Voor 23% gewijzigd door simon op 31-07-2003 17:50 ]

|>


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Simon schreef op 31 July 2003 @ 17:49:
[...]
Maar stel dat ik een klasse include met veel functies waarvan ik er bijv. 1 gebruik, wordt mijn parse-time/load dan 'hoger' (dus echt hoger) dan wanneer ik een klasse include met 1 functie?
..en dat is de hamvraag! Weet iemand dit?

offtopic:
Ivy gaat even eten....

Acties:
  • 0 Henk 'm!

Verwijderd

Het maakt wel uit in load en parse-time, dat is logisch. Maar ik denk niet dat het dramatisch veel scheelt. Op een druk bezochte site zoals tweakers wordt het wel interessant om ook naar de kleine optimalisatie dingen te kijken.

Waarom verdeel de de functies niet op in verschillende includes? Dan include je allen de zaken die je nodig hebt. Gebruik b.v. include_once om dubbele includes te voorkomen.

Acties:
  • 0 Henk 'm!

  • pjonk
  • Registratie: November 2000
  • Laatst online: 16-09 20:14
Dit topic is wellicht ook interessant.
[rml][ php] hoe groter de source hoe slomer?[/rml]

It’s nice to be important but it’s more important to be nice


Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Verwijderd schreef op 31 juli 2003 @ 17:59:
Op een druk bezochte site zoals tweakers wordt het wel interessant om ook naar de kleine optimalisatie dingen te kijken.
Had je er al aan gedacht dat wij, met zo'n 1.5M hits per dag optimalisaties van enkele microseconden nog maar nauwelijks merken? (elke microseconde winst scheelt dan 1.5 seconde cpu-tijd op een dag, niet echt de moeite waard als het er maar een paar blijven ;) )

Zodra de optimalisaties in de milliseconden gaan lopen worden ze de moeite waard, maar dan zijn ze weer ook interessant voor de kleinere sites :)

Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
een functie die je definieert in een andere functie, wordt pas geparsed als de parent functie wordt uitgevoerd. Als je dus groepen functies groepeert in een andere functie, kan dat schelen.

Weet niet of je daar wat aan hebt.

Verder, deed ik een shitload aan skinning functies aanroepen die niet werden gebruikt. (Bijna elke pagina, had zn eigen bijgaande skinning-page), en toen ik een scriptje maakte, om alleen maar de juiste skinning page te laden, en niet ze allemaal, scheelde me dat 20 ms ofzo, per page. Best veel, op een gemiddelde laadtijd van 100 (toen 120) ms.

[ Voor 44% gewijzigd door Grijze Vos op 31-07-2003 19:00 ]

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


Acties:
  • 0 Henk 'm!

  • twiekert
  • Registratie: Februari 2001
  • Laatst online: 30-08 11:55
het hangt er uiteraard vanaf hoe groot deze functies zijn. praten we hier over 400 regels of 2500 regels php code ?

ik ontwikkel zelf websites op een pentium 3-500 met apache / php op linux. en elke 200 regels die je onnodig include maakt zeker veel uit in parsetime.

het dwingt je in iedergeval wel tot net programmeren en ellenlange optimalisaties :P

als ik 700 regels niet hoef te includen scheelt me dat toch wel 0.01s in parsetime :)

het is veel makkelijker om hier een include systeem voor te maken. verdeel al je functies (of groepen van, als ze losstaand niet werken) in losse bestanden. maak dan een include configuratie per bestand.

zoiets bijvoorbeeld:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?

plaats dit in een algemeen configuratie bestand wat je overal included:

$CFG_include['/search.php'][] = 'includes/function.search.inc.php';
$CFG_include['/search.php'][] = 'includes/function.doewat.inc.php';
$CFG_include['/search.php'][] = 'includes/function.template.inc.php';
$CFG_include['/search.php'][] = 'includes/function.htmlformat.inc.php';

en dan bovenaan elk bestand dit zetten.

if ( isset($CFG_include[$_SERVER['PHP_SELF']]) ) {  

   foreach ( $CFG_include[$_SERVER['PHP_SELF']] as $key => $value ) { 
      require_once( $CFG_include[$_SERVER['PHP_SELF']][$key]);
      
   }
} else {
   die ("geen include configuratie voor <B> $_SERVER['PHP_SELF'] </B>");
}
?>
  


uit m'n hoofd, er kunnen fouten inzitten :)
Pagina: 1