Gå til innhold

normal eksekveringstid på script


Anbefalte innlegg

Lager et CMS, og kom på at jeg kanskje burde tenke litt på om koden min tar lang tid å kjøre. Men kom på at jeg vel egentlig ikke har peiling på hva som er normalt..

 

så hva er normalt?

 

brukte

PHP
<?php

/**

 * Simple function to replicate PHP 5 behaviour

 */

function microtime_float()

{

list($usec$sec) = explode(" "microtime());

return ((float)$usec + (float)$sec);

}

 

$time_start microtime_float();

 

// Sleep for a while

usleep(100);

 

$time_end microtime_float();

$time $time_end $time_start;

 

echo "Did nothing in $time seconds ";

?>

 

fra php manualen (butta ut usleep(100) med cmsskriptet da :p ). så skriver ut tiden det tok fra første fil til siste. og ligger nå på rundt 0.02 - 0.04 sekunder. er dette lite? er det mye? trooor ikke koden min skal være spesielt tung, men vet jo ikke.. antar det er sql spørringer som kanskje er det som tar mest tid egentlig?

 

er det tungt å gjøre flere spørringer i samme script liksom? tar spørringer mye tid? eller er det i hovedsak det å koble seg til databasen som tar tid? så når man først er koblet til så har det ikke så mye å si lengre?

 

eller?

 

 

(beklager brudd på tre-ord-regelen!)

Endret av Tussi_qwerty
Lenke til kommentar
Videoannonse
Annonse

med tanke på ytelse:

 

Bør en bruke mysql_unbuffered_query når en ikke trenger å finne num_rows eller sånt, siden en uansett skal sprute ut alt en får? Går det fortere?

 

Trenger man å mysql_free_results? Eller erstattes de uansett neste gang en kjører en ny query?

Lenke til kommentar

Med mindre du planlegger å få hundrevis av besøkende samtidig, så er vel ikke 0.04 sekunder spesielt mye.

 

mysql_free_result() trenger du neppe å bruke. Poenget med den funksjonen er å frigi minne som har vært brukt til å lagre sql-radene med en gang de ikke trengs lenger. Men hos deg avslutter scriptet et hundredelssekund senere, og da frigis all minnet scriptet brukte uansett.

 

mysql_unbuffered_query() har noen fordeler, blant annet en potensiell hastighetsøkning, men også noen ulemper. Du kan jo lese på php.net/mysql_unbuffered_query selv. Sannsynlivis ikke noe du trenger å bry deg om det heller.

Lenke til kommentar

ja, har lest i phpmanualen. men er ikke helt sikker på om jeg forstår hva dem mener :p

 

mysql_unbuffered_query() sends a SQL query query to MySQL, without fetching and buffering the result rows automatically, as mysql_query() does. On the one hand, this saves a considerable amount of memory with SQL queries that produce large result sets. On the other hand, you can start working on the result set immediately after the first row has been retrieved: you don't have to wait until the complete SQL query has been performed.

 

hva mener dem med den minne bufringa? hva er det som buffres hvor liksom?

 

i mitt hode så skjer dette med mysql_query():

  • du sender spørring
  • mysql finner alle radene og putter dem i en svær pakke
  • pakken sendes til deg
  • du får pakken og kan jobbe med den

og i mysql_unbuffered_query():

  • du sender spørring
  • mysql finner rader og dytter dem ut ettersom den finner dem
  • du kan jobbe med radene ettersom de dumper inn
  • til det ikke er flere igjen

... er jeg helt på jordet? hvor kommer bufringa inn i bildet? er det på mysql serveren det skjer, eller i php?

Endret av Tussi_qwerty
Lenke til kommentar

da skjønner jeg ikke helt hvordan denne buffringen skal spare på minnet... for å være ærlig, hehe. må da være mer minnebesparende å dytte ut ting ettersom du får dem, og å ta dem unna ettersom de kommer?

Lenke til kommentar
såh.. de "on the one hand" og "on the other hand" er to ting som er bra med unbuffered query, og ikke en ting som er bra med query og en med unbuffered slik jeg har trodd til nå?

8104328[/snapback]

 

Ja.

Er litt dårlig språk. Som regel er jo "the other hand" en negativ ting.

Lenke til kommentar

ikke værst. Siden jeg har skrekkelig lyst til å få lagt til spørsmålet mitt angående BBCodes, så putter jeg det her! funker jo ikke å legge til nye emner. Dvs.. de kommer opp med emne i lista, men uten innhold :S what is up with this system??

 

---------------------------------------------------------

 

Hvordan lage BBCodesaker

 

og vi prøver igjen!! Beklager alle de tomme emnene, men hvordan skulle jeg kunne vite at den la inn tomme emner i bakgrunnen når den til meg sa det var tekniske problemer og at jeg skulle prøve igjen senere kanskje?? Prøvde igjen senere flere ganger, og da jeg omsider gikk ut var det jo et lass av dem der.. og uten innlegget faktisk :hmm:

 

men men!!

 

fikk et lite svar i en av dem, før den ble låst sammen med de andre: poenget var ikke lister over bbcode, eller hvordan å bruke det her, men hvordan å implementere det selv med php.

 

har brukt en liten kodesnutt jeg fant på wikipedia til å lage en enkel versjon i mitt lille cms:

 

<?php

function bbcode2html($strInput) {

return preg_replace(

array(

'/\\[url[\\:\\=]((\\"([\\W]*javascript\:[^\\"]*)?([^\\"]*)\\")|'.

'(([\\W]*javascript\:[^\\]]*)?([^\\]]*)))\\]/ie', '/\\[\\/url\\]/i',

'/\\[b\\]/i', '/\\[\/b\\]/i',

'/\\[i\\]/i', '/\\[\/i\\]/i',

'/\\

/i', '/\\[\/quote\\]/i'

),

array(

'\'<a href="\'.(\'$4\'?\'$4\':\'$7\').\'">\'', '</a>',

'<b>', '</b>',

'<i>', '</i>',

'<blockquote>', '</blockquote>'

),

$strInput

);

}

?>

 

har utvidet den litt, men lurer på et par ting.

 

1. hvordan man kan få til sånn som de har her med ]liste[ ]*[ ting ]*[ ting til ]/liste[ ? kunne brukt ]ul[ og ]li[ ]/li[ ]ul[ selvfølgelig.. men er nysgjerrig!! :D

 

2. er det noen grei måte å sikre at alle bbcode tagsene er lukket? sånn at de ikke messer opp resten av siden dersom de mangler en slutt? den jeg har brukt der erstatter jo åpning og slutt hver for seg liksom..

 

3. hvordan henter dem ut urlen i det scriptet ovenfor? hvis jeg fatta det kunne jeg jo istedet for å erstatte de tagsene hver for seg, erstatte ]b[noetekst]b[ med <b>noe tekst</b>, men hvordan overfører jeg den "noe tekst" liksom? vet det har noe med capturing groups å gjøre. men fatter ikke helt hvordan å bruke dem. spesielt ikke i denne preg_replace funksjonen... vet det er noe som heter named capturing groups også. mulig å bruke det her istedet for å måtte telle parenteser for å finne riktig liksom?

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...