Zelf uitzoeken is ook nog een optie.
Ik gok alleen dat het antwoord op je vraag is: 'dat is niet boeiend, verschil is nihil'.
echo en print verschillen _iets_ van elkaar, kijk naar die verschillen niet naar de uitvoertijd.
Zelfde geldt voor require en include.
Uit dit topic blijkt dat dat per systeem/configuratie nogal kan verschillen.. Dus de conclusie blijft: probeer het uit..Op woensdag 19 juni 2002 23:02 schreef Gerwin het volgende:
Ik heb een aantal topics via de search gevonden, en geprobeert het zelf te vinden, maar niet echt een konkreet antwoord gevonden. 'k Weet dat het verschil nihil is, maar toch ben ik nieuwsgierig wat nu ECHT het beste is?
Wat wel duidelijk is: in bijna alle gevallen is echo aanroepen met meerdere variabelen (iets) sneller dan echo aanroepen met één "ge-concatenate" string.
Dus bijvoorbeeld
1
| <?echo "string", $var, "string", function($var);?> |
i.p.v
1
| <?echo "string" . $var . "string" . function($var);?> |
On track
'print' accepteert precies één argument, terwijl 'echo' één of meer argumenten accepteert. Verder levert 'print' een return value op, waardoor 'print' wel te gebruiken is in expressies en 'echo' niet.
Ik wil het NIET over performance hebben in combinatie met welke constructie in PHP dan ook. Dank u.
Ik dacht al, hoe kom je in vredesnaam aan 0.6 MB source voor een benchmarkje
zou je niet ff een leesbare versie erop kunnen zetten?
Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz
Verwijderd
Wel cuwl die benchmark, maar ik snap 1 ding niet echt.
1) <? ?>substring<? echo $var; ?>substring<? ?>
0.000901
2) <? ?>string<? ?>
0.000993
Hoe kan dat nou?
Het uitvoeren van 1) lijkt mij toch wel wat zwaarder (waarschijnlijk niet veel) zijn dan 2.
Bij 1) gebeurt bijna hetzelfde als bij 2) alleen wat meer tekst (2 maal substring ipv 1 maal string), de output van $var en nog een extra keer <? ?>.
lijkt erop dat als je met opzet extra variabelen op het scherm zet en nog wat extra tekst en een extra keer PHP aanroepen dat het sneller werkt.
Hoe kan dat nou?
Verwijderd
Ik gebruik gewoon het benchmark script op de server van WouZz.Op donderdag 20 juni 2002 12:22 schreef Grum het volgende:
kijk eens over watvoor tijden je et hebt .. misschien geeft je cpu een paar cycles aan een andere proces weg en is icm met et switchen tussen de processen de paar ns kwijt
Heb het nog niet gedaan op eigen server (zal het ook niet gaan doen, ik zie hier ook wel wat de verschillen zijn)
Ik heb overigens meerdere keren geprobeerd en elke keer won 1 het van 2
Verwijderd
Dit had ik overigens niet verwacht.
'32 bytes'. $var . '16 bytes' 0,86 ms
"32 bytes $var 16 bytes" 1,80 ms
Ik ga mŽn scripts maar een keer allemaal langs, volgens mij zal ik nog heeeeel wat aanpassingen moeten doen
Nou, het hele verhaal begon dus hier met een aantal benchmarks. Maar de meeste benchmarks gebruikten x aantal loops om de tijdsverschillen duidelijk te maken. En om er zeker van te zijn dat PHP geen gebruik zou kunnen maken van eventuele 'caching' of interne optimalisatie (als die er zou zijn) voor loops, wou ik dus een benchmark zonder loops. En om toch nog een beetje significante verschillen te vinden heb ik maar een 103KB string gebruikt...Op donderdag 20 juni 2002 09:19 schreef drm het volgende:
[..]
Ik dacht al, hoe kom je in vredesnaam aan 0.6 MB source voor een benchmarkje, maar toen bekeek ik de source, en zag ik dat je de complete HTTP 1.1 Header Definition erin had staan. Waarom weet ik niet, maar 't staat wel stoer, 0.6 MB source
zou je niet ff een leesbare versie erop kunnen zetten?
Hier en hier staat trouwens de sourcecode zo als ie nu ongeveer is..
On track
hmja, zit wel wat in. Toch heb ik een soort reserve bij benchmarks in PHP... ik vetrouw ze sowieso niet helemaal, en zoals wel vaker geroepen, als je echt wil gaan milliseconde-neuken, dan kun je beter C ofzo gaan doenWouZz:
[snip]
How about een CGI in ASM?
Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz
je zou de source van eenin C geschreven Cgi kunnen optimaliseren als het goed isOp donderdag 20 juni 2002 15:07 schreef drm het volgende:
How about een CGI in ASM?
maar das wel erg overdreven
Doet iets met Cloud (MS/IBM)
Vooral het gezeur van echo statements is zo overbodig. Er komen misschien 100 echo statements in de executie van het gemiddelde script voor. Als dat per statement 1 ms kost, dan is het verschil nog verwaarloosbaar.
Een makkelijke programmeertaal moet je gebruiken omdat 'ie handig programmeert. Als je je vervolgens in allerlei vreemde bochten moet wringen om de efficiëntie te 'optimaliseren' (met enkele procenten) dan is het hele voordeel van de makkelijke taal weg. Ga dan gewoon C (of assembly, voor de masochisten onder ons) coden. Geheid een stuk sneller.
Verwijderd
Ik zou dan eerder aan een apache module in assembly gaan denken, anders heb je die CGI overhead weerOp donderdag 20 juni 2002 15:07 schreef drm het volgende:
How about een CGI in ASM?
Soultaker:
(of assembly, voor de masochisten onder ons)
Toch ben ik het niet helemaal met je eens dat het onzin is het te onderzoeken. Stel dat je een keer een groot performanceverschil tegen komt...
Nu acht ik dat, net als jij toch wel onwaarschijnlijk en vaak verwaarloosbaar, maar toch... als je niet blijft onderzoeken, leer je nooit wat, toch?
ook goed puntZef:
Ik zou dan eerder aan een apache module in assembly gaan denken, anders heb je die CGI overhead weer
Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz
Ook ik ben het niet met je eens dat het benchmarken van PHP statements overbodig is. Okay, voor veel (kleine) eenvoudige sites is het misschien onnodig om zulke kleine performance winsten te halen, omdat die in het niet vallen tegen de response- en downloadtijd.Op donderdag 20 juni 2002 16:53 schreef Soultaker het volgende:
Toch opmerkelijk dat ik hier nog nooit C/C++/Java benchmarks voorbij heb zien komen (of ik moet het vergeten zijn), terwijl ik al vaker dan ik heb kunnen tellen gezeur over PHP benchmarks gehoord.
Vooral het gezeur van echo statements is zo overbodig. Er komen misschien 100 echo statements in de executie van het gemiddelde script voor. Als dat per statement 1 ms kost, dan is het verschil nog verwaarloosbaar.
Een makkelijke programmeertaal moet je gebruiken omdat 'ie handig programmeert. Als je je vervolgens in allerlei vreemde bochten moet wringen om de efficiëntie te 'optimaliseren' (met enkele procenten) dan is het hele voordeel van de makkelijke taal weg. Ga dan gewoon C (of assembly, voor de masochisten onder ons) coden. Geheid een stuk sneller.
Maar zodra je een grotere complexere site hebt kunnen dergelijke verschillen wel degelijk van belang zijn. Zo was ik laatst eens aan het spelen met microtime en zag ik dat mijn twee eregi's om email- en webadressen 'klikbaar' te maken de grote tijdvreters waren. Nadat ik deze had vervangen door een preg_replace was de response tijd van de pagina zichtbaar lager, zelfs bij niet al te grote stukken tekst.
En ik weet ook wel dat je soms door simpelweg een extra index in je database toe te voegen of door je query net even iets anders te schrijven een performance boost krijgt die vele malen groter is dan die je kreeg nadat je vier uur bezig bent geweest om bijvoorbeeld al je echo statements te veranderen. Maar zodra je van mening bent dat je database structuur en query's helemaal optimaal zijn, dan kan je soms nog net 'dat beetje extra' halen door naar je PHP code te kijken.
Bovendien kan 'snelle' code niet alleen voordelig voor je bezoekers zijn, het kan ook zijn voordelen hebben voor je webserver die het uiteindelijk makkelijker heeft. Dit geldt naar mijn idee helemaal als je een drukbezochte webserver of gewoon een webserver met weinig resources hebt omdat je bijvoorbeeld zoals ik op een gedeelde virtual server zit. Bovendien kunnen kleine snelheidsverschillen uiteindelijk een groter snelheidsvoordeel opleveren wanneer de bewuste code/constructie meerdere malen wordt aangeroepen, zoals bijvoorbeeld in loops.
En okay, ik geef toe, het checken of echo of print nou de snelste is en of echo "substring $var substring" sneller is dan echo 'substring' . $var . 'substring' is misschien wel een beetje mierenneukerij, en kan je beter kijken naar je regexes en manieren om loops te doorlopen. Maar het is toch ook wel interresant en leuk om uit te vinden wat nou écht de snelste manier is voor één van je meest gebruikte 'language constructs'.
Verder ben ik het wel met je eens dat je het jezelf niet te moeilijk moet maken om de állersnelste manier te vinden. Uiteindelijk moet je voor jezelf gewoon de juiste verhouding zien te vinden tussen lees- en onderhoudbaarheid van je code en snelheid. En over het algemeen weegt lees- en onderhoudbaarheid toch het zwaarst voor de meeste mensen. Maar waarom zou je een bepaalde manier gebruiken als het op een andere manier sneller is terwijl dat niet ten koste van je lees- en onderhoudbaarheid gaat? Want uiteindelijk wil iedereen toch de snelste code met de beste onderhoudbaarheid en eventueel flexibiliteit, toch?
En als je in PHP echt voor de uiterste maximum snelheid gaat (en niet wil overstappen naar C
On track
Als je dan nog meer performance winst wil hebben, zou je een kunnen kijken naar de verschillende zend cache alternatieven die er zijn voor php, waarbij mijn voorkeur uitgaat naar de php-accelerator. Met zulke tools zijn tenminste echt zichtbare snelheidswinsten te behalen.
Die werkt ensich wel redelijk, maar er zitten nog wel een aantal wazige bugs in.Op vrijdag 21 juni 2002 13:26 schreef freak007 het volgende:
Als je dan nog meer performance winst wil hebben, zou je een kunnen kijken naar de verschillende zend cache alternatieven die er zijn voor php, waarbij mijn voorkeur uitgaat naar de php-accelerator. Met zulke tools zijn tenminste echt zichtbare snelheidswinsten te behalen.
Gelukkig gaat bij de volgende release de registratietoestand eruit.
De meeste kwaliteitshosters hebben Zend Optimizer wel draaien. Helaas is de Optimizer ook niet voor alle systemen beschikbaar.
maar als het parsen van iets langer duurt, kost het dan ook altijd meer rekenkracht voor de computer?
De grootste Nederlandstalige database met informatie over computers met zoekfunctie!!
Als iets elke keer opnieuw geparsed moet worden (zoals met PHP dus het geval is), ja.pietje63:
beetje offtopic misschien...
maar als het parsen van iets langer duurt, kost het dan ook altijd meer rekenkracht voor de computer?
Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz
Verwijderd
Dit kan uitgroeien tot een erg handige resource voor scripters die met een grote site bezig zijn...
wat vinden jullie?
Verder levert een google zoektocht ook al wel redelijk wat op, omdat er op internet al veel benchmarks staan.
Een ander punt om er geen sticky topic voor te maken is het feit dat mensen daar simpelweg toch niet in kijken. Let maar eens op hoe vaak de laatste tijd er wel niet is gevraagd waarom scripts het niet doen, waarbij de oorzaak lag aan de register_globals optie in php.ini.
Verwijderd
Ik vind bijv echo handiger maar ik gebruik print (beetje krom maargoe
Ik bespeur hier een zekere mate van onethische logica.