Gå til innhold

Hvordan skrive ut innholdet i en tekst fil?


Anbefalte innlegg

Videoannonse
Annonse

Det stemmer, men gode kodeskikker er likevel en bra ting å praktisere, og dette gjelder alle programmeringsspråk.

 

Om jeg skriver koden min sånn

 

for($i=0;$i<100;$i++){echo"hello world";}

 

I stedet for

 

for($i=0; $i < 100; $i++){

echo 'hello world';

}

 

blir det ikke nødvendigvis tregere. You get the point.

Lenke til kommentar

La meg ta et eksempel: Jeg skriver alltid SQL-spørringer med double quotes, selv om jeg vet at jeg ikke skal ha noen variabler i spørringen. Årsaken er enkel, jeg synes kode er mest ryddig når man ikke må escape quotes i strenger, og jeg vet at jeg aldri bruker double quotes i en SQL-spørring: "SELECT * FROM table WHERE col = 'val' and col2 ='val2'" vs. 'SELECT * FROM table WHERE col = \'val\' and col2 = \'val2\''. Er dette også en dårlig kodevane? I så fall vil jeg gjerne høre begrunnelsen din for det.

 

Poenget mitt er uansett det samme - Det spiller ingen rolle hva man gjør. Det er mange andre ting som har innflytelse på ytelsen i et PHP-script, så å begynne å korrigere kode som er riktig uten å ha noen god grunn for det synes jeg er ganske unødvendig.

Lenke til kommentar

@Lokaltog: Det er ingen dårlig kodevane, det jeg mente var at så lenge en vet at en streng ikke skal inneholde variabler kan man likesågodt holde seg til enkle fnutter. Dessuten vil echo 'Your name is ', $name være raskere en echo "Your name is $name" (echo er for øvrig målt raskere en print også) - samma om det er millisekunder eller ikke :p Like greit å bare gjøre det. Jeg bruker også doble fnutter i SQL-spørringer av samme grunn som deg.

 

Det er mange andre ting som har innflytelse på ytelsen i et PHP-script

 

Kan du nevne noen ? :)

 

http://www.google.no/search?q=php+optimiza...lient=firefox-a

Lenke til kommentar

Nå er kvaliteten på de tipsene som dukker opp først veldig tvilsom da. Først og fremst listes de som et faktum uten noe bevis, og for det andre så tviler jeg på at forskjellen er betydelig. Altså, kort sagt, mye av det man finner av «PHP optimalisering» er ren bullshit eller i bestefall noe du tjener 1ms på over flere tusen linjer kode etter å ha brukt flere timer på å skrive om. Det er rett og slett poengløst å f.eks bytte ut " med ' bare fordi det relativt sett er en stor forskjell, mens det i virkeligheten er marginalt.

 

Andre ting man visstnok tjener tid på i følge de første resultatene i søket ditt (ingen av de viser til resultater fra testing):

  • «If a method can be static, declare it static. Speed improvement is by a factor of 4.»
    At overhead-en er 4x mindre har lite å si når innholdet i funksjonen tar ørten ganger med tid. Inntjeningen er sannsynligvis langt mindre enn 1ms.
  • «require_once() is expensive»
    At require_once tar tid er ingen bombe. Man henter inn en PHP-fil, og den skal tolkes. At det tar mer tid enn require og include generelt er ytterst tvilsomt. Å unngå require og include generelt er nok heller en ide.
  • «echo is faster than print.»
    Meget mulig, men igjen, dette er inntjening under 1ms.
  • «if (!isset($foo{5})) { echo "Foo is too short"; } er bedre enn if (strlen($foo) < 5) { echo "Foo is too short"; }»
    Sannsynligvis nok et eksempel på inntjening under 1ms.
  • «Bruk ++$i fremfor $i++»
    Gjett hva dette er?
  • «Use full paths in includes and requires, less time spent on resolving the OS paths.»
    Prinsipielt er jeg enig, men å argumentere med at det tar mindre tid blir for dumt. Ja, det tar nok mindre tid, men nei, man tjener nok ikke mye på det.
  • «Close your database connections when you're done with them»
    Igjen, prinsipielt enig, men jeg har min tvil at det er noen praktisk forskjell i ytelse.
  • «Incrementing a local variable in a method is the fastest. Nearly the same as calling a local variable in a function.»
  • «Incrementing a global variable is 2 times slow than a local var.»
  • «Incrementing an object property (eg. $this->prop++) is 3 times slower than a local variable.»
    De tre punktene her kan godt stemme, men det er poengløst med mindre man har en loop som går 100.000 ganger og gjøre det. Mest sannsynligvis mikroskopisk inntjening.
  • «Incrementing an undefined local variable is 9-10 times slower than a pre-initialized one.»
    Joda, men var det målt med eller uten initiering av variablen? Har min sterke mistanke om at dette er målt mot en allerede definert variabel. Uannsett, poengløst med mindre man har veldig mange udefinerte variabler man skal bruke. Personlig tror jeg ikke at jeg runder 1000 variabler i bruk, kanskje ikke 100 heller.
  • «Just declaring a global variable without using it in a function also slows things down (by about the same amount as incrementing a local var). PHP probably does a check to see if the global exists.»
    Minimal inntjening.
  • «Methods in derived classes run faster than ones defined in the base class.»
    ... :no:
  • «Don't split methods too much, think, which code you will really re-use»
    Det finnes grenser, men generelt sett blir dette bare for dumt. Funksjoner etc. vil gjøre koden betydelig mer oversiktelig, og en ev. inntjening veier overhode ikke opp for dette.
    «You can always split the code of a method later, when needed» ... hvilket betyr ekstraarbeid ...

Det er vel på sin plass at jeg nevner noe som faktisk har noe for seg:

  • Ikke bestem maksgrensen i en for-loop ut fra en funksjon (f.eks for ($i = 0; $i < count($var); $i++) ). Pga. at PHP vil kjøre funksjonen hver bidige runde i loopen er det bedre å bruke en variabel hvor antallet er satt på forhånd. På små looper er det lite å hente, men de litt større vil ha nytte av det (kanskje et helt ms :p).
  • PHP har flere list-klasser/objekter med en «random access»-funksjon. Unngå så langt det går å bruke disse. Spesielt gjelder dette hvis du bruker en for-loop til å gå igjennom listen. Bruk heller foreach, siden lister ikke er bygget for «random access» og foreach trenger ikke dette.
  • Cache ting du bruker ofte, enten til fil eller bruk memcache. F.eks «ti siste fra forumet» er en god kandidat.
  • Unngå @. Det skal aldeles ikke mange av de før du kan måle det.
  • Ikke bruk include/require unødig. Hent bare inn filer du faktisk trenger, og ikke minst opprett bare de objektene du faktisk trenger. Her kan det være endel å hente, dvs. over 10ms hvis det er snakk om mye kode eller flere unødige objekter.

Dog, det aller viktigste er å ha en god struktur på ting. Det som oftes kan optimaliseres er ikke enkeltlinjer, men hele algoritmer.

Lenke til kommentar
Dog, det aller viktigste er å ha en god struktur på ting. Det som oftes kan optimaliseres er ikke enkeltlinjer, men hele algoritmer.

Må si meg enig i det siste her. En kan legge mange timer inn i optimalisering i henhold til slike lister, men man vil ikke komme langt før man kan språket skikkelig slik at man kan utnytte det til sitt fulle potensiale, om det så gjelder PHP eller MySQL, og innehaver en god «algoritmisk tenkning».

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...