|
| Udskrive hele siden via PHP fortolkeren el~ Fra : Thomas Løjmann Jørge~ |
Dato : 21-11-04 17:42 |
|
Hej,
Jeg er ved at lave et site som henter alt tekst ind via en inc-fil som
der så findes i flere sprog-versioner.
Jeg tænkte på - kan det bedst betale sig at skrive hele siden ud via
PHP fortolkeren eller starte/stoppe PHP fortolkeren hele tiden - hvad
er hurtigst?
Nogle der har nogle erfaringer?
/Thomas
| |
Peter Binderup (21-11-2004)
| Kommentar Fra : Peter Binderup |
Dato : 21-11-04 18:44 |
|
Jeg mener at have læst et sted at Rasmus Lerdorf har udtalt en gang at
det hurtigste i PHP er at går ind og ud af <?PHP ?> så jeg nok anbefale
at du bruger følgende metode.
------------
<?php
Dynamisk indhold
?>
Statisk indhold
<?php
Dynamisk indhold
?>
------------
På den måde "spilder" php fortolkeren ikke tid med at lave echo's eller
print, som sagtens kunne have været klaret af browseren i stedet for.
Om det så er kønt - se det er en anden sag...
/Peter
| |
Thomas Løjmann Jørge~ (21-11-2004)
| Kommentar Fra : Thomas Løjmann Jørge~ |
Dato : 21-11-04 21:16 |
|
Tak - tænkte det godt :)
/Thomas
| |
Peter Brodersen (22-11-2004)
| Kommentar Fra : Peter Brodersen |
Dato : 22-11-04 19:27 |
|
On Sun, 21 Nov 2004 17:42:25 +0100, Thomas Løjmann Jørgensen
<lojmann@lojmann.dk> wrote:
>Jeg tænkte på - kan det bedst betale sig at skrive hele siden ud via
>PHP fortolkeren eller starte/stoppe PHP fortolkeren hele tiden - hvad
>er hurtigst?
Udviklingsmæssigt kan det bedst betale sig at have en konsekvent
linje. Når Rasmus snakker om hvad, der er hurtigst, så er vi nede i
decimalerne.
Sandsynligheden taler for at tradeoff'et med en lillebitte smule
hurtigere kode (hvilket alligevel bliver ædt op tusindfold af en
vilkårlig funktion) i forhold til mere ulæselig kode er et dårligt
tradeoff.
Hvis det bare handler om at siden "skal være så hurtig som mulig", så
er der bunker af andre steder, man først bør sætte ind på, før man
begynder at bekymre sig om at springe ud og ind af php.
Tænk evt. mere overordnet på det: CPU-tid kan alligevel ikke opspares.
Og den samlede procestid, du sparer indenfor det næste år ved at lave
den ændring, er sikkert alligevel mindre end den procestid, det tager,
når jeg går ind på din hjemmeside og reloader 50 gange :)
--
- Peter Brodersen
| |
Peter Binderup (22-11-2004)
| Kommentar Fra : Peter Binderup |
Dato : 22-11-04 19:43 |
|
Peter Brodersen wrote:
> Udviklingsmæssigt kan det bedst betale sig at have en konsekvent
> linje. Når Rasmus snakker om hvad, der er hurtigst, så er vi nede i
> decimalerne.
Og for at gå i mod min egen post
Jeg var for et par år siden på PHP International Conference, og der var
der et indlæg "PHP Hackers Paradise"
( http://www.e-gineer.com/articles/php-hackers-paradise.phtml)
Han kommer nemlig ind på hvad man kan vinde ved at optimere sin kode og
hvad det koster at vinde de millisekunder.
Hvis det er ens kode er langsom, så vil jeg anbefale at man ser på at
implementere en profiler i sit udviklingsmiljø - Zend Studio har denne
funktionalitet. Der er det dejligt at kunne se med det samme hvilken fil
eller hvilket funktionskald der er synderen hvis der er noget der er
langsomt.
/Peter
| |
Thomas Løjmann Jørge~ (22-11-2004)
| Kommentar Fra : Thomas Løjmann Jørge~ |
Dato : 22-11-04 21:51 |
|
Også en stor tak til dig Peter - vil læse lidt på det :)
/Thomas
| |
Peter Brodersen (22-11-2004)
| Kommentar Fra : Peter Brodersen |
Dato : 22-11-04 22:22 |
|
On Mon, 22 Nov 2004 21:50:34 +0100, Thomas Løjmann Jørgensen
<lojmann@lojmann.dk> wrote:
>Også en stor tak til dig Peter - vil læse lidt på det :)
Den letteste måde at falde i er ved at kigge på en isoleret test
mellem to funktioner. Fx benchmarke to funktioner og konkludere, at
den ene er tre gange så hurtig som den anden, derfor må det samlede
resultat også være tre gange så hurtigt - uden at kigge på
proportionerne.
Der findes adskillige operationer udenfor scriptet, der har lige så
stor indflydelse. Hvordan er ens PHP compiled? Hvor mange overflødige
libraries har man med, "bare fordi"? Kører den som CGI eller
pre-forker ens webserver?
Selvfølgelig er det tilstande, der kan variere fra webserver til
webserver og måske er udenfor ens kontrol, hvis man planlægger at
koden skal stor-distribueres. Men hvis det blot er af hensyn til sit
eget projekt, så er også det værd at kigge på.
Hvis jeg har begrænset tid til at søge performanceoptimeringer på et
site, vil jeg normalt starte med at kigge på database-teknologien (jeg
antager her at sitet er "stort" nok til i et eller andet omfang at
gøre brug af databaser). Korrekt brug af indexes, evt. tilkobling af
en querycache, samt jagt på store, "unødvendige" (eller unødvendigt
repeterede) opslag, som et par af de helt grundlæggende emner.
--
- Peter Brodersen
| |
Janf (22-11-2004)
| Kommentar Fra : Janf |
Dato : 22-11-04 22:53 |
|
Thomas Løjmann Jørgensen wrote:
> Jeg tænkte på - kan det bedst betale sig at skrive hele siden ud via
> PHP fortolkeren eller starte/stoppe PHP fortolkeren hele tiden - hvad
> er hurtigst?
Ingen erfaringer. Men Du kan ikke starte/stoppe PHP-fortolkeren. Det er
PHP, som fortolker hele din side.
print = echo = '?>'
Det skal forstås sådan, at den HTML-kode, som din side starter med, blot
bliver oversat til et echo- eller print-statement. '?>' ligner
slutningen på PHP-koden, men i virkeligheden er det starten på et
print-statement, dog uden mulighed for at angive udtryk og variabler.
Dermed er udførelsestiden nøjagtig lige hurtig om du bruger den ene
metode eller den anden. Der kan være lidt forskel på oversættelsestiden,
men den er mariginal.
Jeg ved ikke om jeg udtrykker mig forståeligt. Spørg bare.
--
Jan Fjeldmark mailto:janf@janf.dk http://janf.dk/
Hvad du end tror du er, så er du altid meget mere.
| |
Peter Brodersen (22-11-2004)
| Kommentar Fra : Peter Brodersen |
Dato : 22-11-04 22:56 |
|
On Mon, 22 Nov 2004 22:53:13 +0100, Janf <janf@janf.dk> wrote:
>men i virkeligheden er det starten på et
>print-statement, dog uden mulighed for at angive udtryk og variabler.
"I virkeligheden" er det vel tilsvarende også interpolering af
variable, tjek for escapede tegn, returværdier (for print), m.m., der
er medvirkende til at optage tid? :)
--
- Peter Brodersen
| |
Janf (22-11-2004)
| Kommentar Fra : Janf |
Dato : 22-11-04 23:26 |
|
Peter Brodersen wrote:
> On Mon, 22 Nov 2004 22:53:13 +0100, Janf <janf@janf.dk> wrote:
>
>
>>men i virkeligheden er det starten på et
>>print-statement, dog uden mulighed for at angive udtryk og variabler.
>
>
> "I virkeligheden" er det vel tilsvarende også interpolering af
> variable, tjek for escapede tegn, returværdier (for print), m.m., der
> er medvirkende til at optage tid? :)
>
Der er ingen tvivl om at du har ret. Men forskellen på at søge efter ?>
og at søge efter \ eller " er minimal i sammenligning med tiden for at
sende resultatet ud gennem en tcpip-stack.
--
Jan Fjeldmark mailto:janf@janf.dk http://janf.dk/
Hvad du end tror du er, så er du altid meget mere.
| |
|
|