Avatar billede fireburner Nybegynder
11. april 2007 - 20:06 Der er 5 kommentarer

microtime før og efter "echo" af stor streng

Hej alle

Jeg sidder med en nøddeknækker på hvilken svaret givetvis er temmeligt simpelt, men jeg kan ikke lige komme på det!

Jeg bruger meget microtime til at finde ud af, hvor lang tid det tager at afvikle diverse.

Eks. i start af kode:
function microtime_float()
{
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}
$time_start = microtime_float();

Og til slut:
// Debug
$time_end = microtime_float();
$time = $time_end - $time_start;
echo "Page loaded in $time seconds\n";

Nu er jeg så stødt ind i et lidt sjovt "problem" - på min localhost, er page loaded altid ca. 0.04 seconds, hvilket er helt fint... However, når jeg nu har lagt det online på en ny server (Xeon maskine med masser af power) viser den 0.12 -> 0.30 seconds.

Så kommer mit (newbie) spørgsmål.

Jeg bruger altid en streng ($strPrint) til alt indhold på siden der skal skrives ud til skærmen, som jeg først skriver ud som det sidste i min kode - hvis jeg microtime'r lige før jeg "echo $strPrint;", så viser den også på serveren 0.04 seconds som afviklingstid. Men hvis jeg gør det efter jeg har skrevet den store streng ud, hopper tiden altså op på 0.12 -> 0.30 seconds, hvilket den ikke gør på min localhost. Da microtime jo gerne skulle være server-tid, forstår jeg slet ikke, at en echo skulle have så meget at sige - men hvis jeg echo'er f.eks. 40kb data, kommer den altså helt op og ringe på de 0.30 seconds... (desuden ser det ud til, at antallet af mikro sekunder ryger op, jo større streng jeg skriver ud til skærmen)

Phew det var en længere smøre! Håber der er en derude som er klogere end mig, som kan give mig en logisk forklaring på dette

På forhånd mange tak!
Avatar billede nixir Nybegynder
12. april 2007 - 00:21 #1
Det lyder da logisk i mine ører? En stor variable der skrives ud, tager længere tid at "behandle" end en lille? Kan du ikke sige hvad det helt præcist er du er i tvivl om?
Avatar billede fireburner Nybegynder
12. april 2007 - 08:20 #2
Tak for dit svar.

Det der undrer mig er jo bare, at det *ikke* tager længere tid at skrive ud på min localhost, men kun på serveren - og hvis microtime udregnelsen viser udelukkende for server-side forbrug (som den skulle), burde det vel være ligegyldigt om man sidder lokalt, på 56k, eller på 10mbit ? Eller er der noget jeg har misforstået
Avatar billede nixir Nybegynder
12. april 2007 - 13:53 #3
Nu går jeg over i noget gætværk, og jeg håber der er nogle eksperter den vil af- eller bekræfte det:

Min umiddelbare teori, må være at den serveren sender din "echo" til client før den går videre - dermed er det 40 KB der skal sendes på en 512k forbindelse = ~0.1 sek - som sagt, jeg ved det ikke, men det er mit skud her...

Håber som sagt der er nogle der kan af- eller bekræfte det!
Avatar billede fireburner Nybegynder
13. april 2007 - 08:14 #4
Det lyder jo ikke ulogisk - jeg læser bare alle steder, at målingen er server-side - men du må givetvis have ret, eftersom hastigheden skifter alt efter forbindelsen :) Tak for hjælpen!
Avatar billede nixir Nybegynder
13. april 2007 - 15:59 #5
Jammen microtme er jo stadig måling af server-side i min teori - jeg siger blot at den bruger tid på at "sende" det til brugeren - ikke lave client-side udregninger etc.

Læs lidt om echo, det kunne være du kunen finde ud af om den "bremser" scriptet før det er sendt til brugeren - og så læs om print bagefter, da det kunne være der var forskel.

Jeg understreger igen at det blot er en teori... Vil MEGET gerne have den af- eller bekræftet, da det jo ku være nyttigt af vide i nogle tilfælde...

Mvh.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester