Gå til innhold

PHP·pub - Programming With Attitude - and beer


Anbefalte innlegg

sannsynligvis vil en PHP optimizer som legger seg på parser delen server side gjøre mye mer forbedring ytelsesmessig enn små kodeforbedringer uansett (forruten på SQL fronten). ;)

 

Tester et nytt optimizer system på forskjellige script og siden det legger scriptene i minnet førte det til en ytelsesøkning på mellom 20->50% på alle jeg testet, både ferdigløsninger og "hjemmenekra" løsninger.

 

For bedrifter blir det sannsynligvis mye billigere å enten kaste inn en optimizer eller å kaste inn mer kalkulatorkraft enn å drive med "pirkekoding" for å senke parsetiden på et script med minimalt med tid :)

Lenke til kommentar
Videoannonse
Annonse

Greia er hva foreach ER. Det er en funksjon som er laget primært for å loope igjennom assosiative arrayer. For er dermot en funksjon som har en eneste oppgave: loope igjennom en numerisk array. Dette har i stor grad med at jeg er vant til og ikke minst opplært i C++ hvor man ikke har foreach (ja, man har for_each og jo, det noe helt annet ...) og ei heller assosiative arrayer (dog andre datastrukturer, men der har man helt andre måter å loop på).

 

Dog, for å snu flisa litt: Hvorfor bruke foreach? Hva er fordelene?

Lenke til kommentar
PHP 4 introduced a foreach construct, much like Perl and some other languages. This simply gives an easy way to iterate over arrays. foreach works only on arrays, and will issue an error when you try to use it on a variable with a different data type or an uninitialized variable. There are two syntaxes; the second is a minor but useful extension of the first:

Står ingenting om «assosiative» arrays der (multidimensjonale array du mener?)

 

Dog, for å snu flisa litt: Hvorfor bruke foreach? Hva er fordelene?

Jeg vil tru at foreach er optimalisert for sitt bruk, nemlig å iterere over arrays (og objekter i php5). I php5 kan du til og med bruke referanser («foreach ($array as &$value)»).

 

Fordelene er jo så klart mindre kode, spesielt om arraynøklene ikke er numeriske. Og så slipper du å kjøre $len = count($array); først

Lenke til kommentar
PHP 4 introduced a foreach construct, much like Perl and some other languages. This simply gives an easy way to iterate over arrays. foreach works only on arrays, and will issue an error when you try to use it on a variable with a different data type or an uninitialized variable. There are two syntaxes; the second is a minor but useful extension of the first:

Står ingenting om «assosiative» arrays der (multidimensjonale array du mener?)

5869111[/snapback]

Altså, hele poenget med iterasjon er nettopp å loope igjennom noe som ikke er numerisk indeksert, altså assosiativt i PHP siden vi bare har arrayer. I C++ vil man i tillegg ha vector, list, map pluss en del andre ting hvor du ikke sånn helt uten videre kan bruke []. I tillegg er [] det samme som random access iterator.

 

Dog, for å snu flisa litt: Hvorfor bruke foreach? Hva er fordelene?

Jeg vil tru at foreach er optimalisert for sitt bruk, nemlig å iterere over arrays (og objekter i php5). I php5 kan du til og med bruke referanser («foreach ($array as &$value)»).

 

Fordelene er jo så klart mindre kode, spesielt om arraynøklene ikke er numeriske. Og så slipper du å kjøre $len = count($array); først

5869111[/snapback]

Den er optimalisert for å iterere igjennom noe som egentlig er langt fra en array (selv om det ser slik ut i koden). I tillegg, når ble det et godt argument at man med en for-loop får en ekstra linje med kode? Færre linjer kode er overhode ikke det samme som rask kode.

Endret av Ernie
Lenke til kommentar

færre linjer med kode tar kortere tid å skrive. Når hastighetsforskjellen er uvesentlig, skriver jeg ikke det alternativet som tar lengst tid bare fordi jeg sparer hundre/tusendeler. Sjølsagt, om det dreier som om en enorm forskjell, velger jeg det som bruker kortest tid for parseren å utføre.

 

Det som slår størst inn ang. hastighetsforskjeller i php, er uansett at det virker som php sin minnehåndtering har har mye å si.

Jeg tenkte det kunne være artig å teste ut hva som er kjappest av for-og foreach på et enkelt array. Sjøl om resultata varierer kraftig, ser jeg at forskjellen det er snakk om, er i tusendeler.

På arrays der du vil liste opp key + value (og som ikke er numeriske), vil nok foreach være kjappere enn for, pga at du må inn med kall til flere funksjoner om du vil liste opp keys og verdier i en for-loop.

<?php

 

function script_runtime ($round = 20)

{

 

    if ( !empty( $GLOBALS['scrt'] ) )

    {

        list($msec, $sec) = explode(' ', microtime());

        echo 'Execution took this long: ',  round(($sec + $msec) - $GLOBALS['scrt'], $round);

    }

    else

    {

        list($msec, $sec) = explode(' ', microtime());

        $GLOBALS['scrt'] = $sec + $msec;

    }

}

 

script_runtime();

 

$array = array('hello', 'I am', 'Funny', 2345, 1337 . 'sad', "\t\tdata\n\n\t\t", 'heelo');

 

foreach($array as $value)

{

    echo "Dette er verdien: $value\n";

}

 

script_runtime();

$scrt = null;

script_runtime();

$len = count($array);

for($i=0;$i < $len; $i++)

{

    echo "Dette er verdien: {$array[$i]}\n";

}

script_runtime();

 

?>

Endret av dabear
Lenke til kommentar

http://www.bruesoft.com/php_benchmark.php

 

Denne har en del benchmarks, selv om tallene og kommentarene under ikke stemmer overens slik jeg ser det.

 

EDIT:

Etter å ha lest litt nøyere, ser jeg at utregningene gjøres i real-time når du laster siden, derfor kan faktisk resultatene variere veldig på rundt når på dagen osv.

Første gang jeg gikk inn på siden var resultatene nesten konsekvent motsatt av kommentarene, men da jeg trykket refrsh, ble pluselig resultatene enig med kommentarene...

Endret av Nazgul
Lenke til kommentar
Gjest Slettet-df17e
[....] Men fordelen med slike tester/sammenligninger er for å vise hvor stort et språk er i forhold til andre språk. Det er jo kjekt å se at PHP ikke er upopulært ;)

5882423[/snapback]

 

Dette er også grunden til at jeg postet linken over :)

Lenke til kommentar
Læringsmål

Studenter som fullfører denne modulen vil være i stand til å:

- lage en nettside med enkelte avanserte funksjoner i PHP

- demonstrere kunnskaper om ulike interaktive fortellerstrukturer og deres bruksområder

- kunne planlegge og produsere et nettsted fra ide til ferdig produkt

[......]

 

Lurer virkelig på kva dei legg i det første punktet. Får vel berre vente til hausten med å finne det ut. :)

Lenke til kommentar
noen her som har hatt PHP som fag. Kan han/hun i tilfellet fortelle litt om hva man lærer. Føler at det er litt unødvendig å ta et slikt fag hvis man kan mye fra før.

5894628[/snapback]

 

Jeg har tatt huin205 fra UiB, webprogrammering og databaser.

I dette faget lærte man basic php med variabler, konstanter, funksjoner, kontrollstrukturer, returverdier, filbehandling, arrays både en og todimensjonale, feilhåndtering, PEAR it-templates, kobling til mysql-databaser, herunder også innsetting, uthenting, sletting og endring. Videre om sessions, lesing og skriving fra og til xml-dokumenter, autentisering vha php, litt om sikkerhet i tillegg til klasser (i php4 og php5), arv, modifikatorer, abstrakte klasser, interface.

 

I huin205 var php 50% av kurset, resten var xml og xslt.

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å
×
×
  • Opprett ny...