[PHP] Uitvoertijd 1+ sec meten

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • niels_999348
  • Registratie: Maart 2003
  • Laatst online: 20-09 08:10
Ik heb bij mijn Vbulletin forums diverse hacks aangebracht (zelfcode) alleen nu begint hij steeds trager te worden. Daarom wil ik mijn code gaan optimaliseren, alleen alle parse time meetscripts kunnen niet boven de 1 seconde meten :S
Ik heb al gegoogled got search en in #php gevraagt alleen niemand wist iets. Hebben jullie 1 idée?
(Wat wel kan is pagina in delen meten en dan optellen)

Acties:
  • 0 Henk 'm!

Verwijderd

microtime() aan het begin en het eind pakken
verschillen vergelijken...

Acties:
  • 0 Henk 'm!

Verwijderd

Dit is volgens mij de beste manier:

PHP:
1
2
3
4
5
6
7
# Parsetime start...
$parsetime_start = array_sum(explode(' ', microtime()));

// doe wat...

# Show parsetime...
echo '<script>window.status = "Parsetime: '.round(array_sum(explode(' ', microtime())) - $parsetime_start, 5).'";</script>';
Verwijderd schreef op maandag 07 maart 2005 @ 17:52:
microtime() aan het begin en het eind pakken
verschillen vergelijken...
Ik denk dat deze vergelijking niet echt nuttig is :)

[ Voor 37% gewijzigd door Verwijderd op 07-03-2005 18:08 ]


Acties:
  • 0 Henk 'm!

  • niels_999348
  • Registratie: Maart 2003
  • Laatst online: 20-09 08:10
code:
1
2
3
4
5
6
7
8
9
10
11
12
<?php

$stimer = explode( ' ', microtime() );
$stimer = $stimer[1] + $stimer[0];

scriptcode hier (groot blok ;))

$etimer = explode( ' ', microtime() );
$etimer = $etimer[1] + $etimer[0];
printf( "%.2f", ($etimer-$stimer) );

?>

Gebruik ik alleen het geeft mij dan: 1111252569.1225 als output :S
Daarop heb ik mij laten vertellen dat mijn parsetime groter is dan 1 sec, wat volgens mijn vbulletin ook klopt in m'n admincp. Alleen ik wil het op elke pagina afzonderlijk kunnen meten en niet gemiddelde's....

Acties:
  • 0 Henk 'm!

  • niels_999348
  • Registratie: Maart 2003
  • Laatst online: 20-09 08:10
Verwijderd schreef op maandag 07 maart 2005 @ 18:00:
Dit is volgens mij de beste manier:

PHP:
1
2
3
4
5
6
7
# Parsetime start...
$parsetime_start = array_sum(explode(' ', microtime()));

// doe wat...

# Show parsetime...
echo '<script>window.status = "Parsetime: '.round(array_sum(explode(' ', microtime())) - $parsetime_start, 5).'";</script>';
krijg hetzelfde grote getal als in mijn post hierboven :S (naja niet hetzelfde, even groot ;))
kleine noot:
wanneer ik alleen hello world laat zien krijg ik gewoon 0,0 :S dus aan server ligt het niet

[ Voor 37% gewijzigd door niels_999348 op 07-03-2005 18:09 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Ik heb nu dit:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# Parsetime start... 
$parsetime_start = array_sum(explode(' ', microtime())); 
echo '<br>$parsetime_start: '.$parsetime_start.'<br>';

// doe wat...
$i=0;
while( 1 ){

    if($i > 5000)
        break;

    $i++;
}

# Show parsetime...
$parsetime_stop = array_sum(explode(' ', microtime()));
echo '<br>$parsetime_stop: '.$parsetime_stop.'<br>';
echo 'Parsetime: '.round( $parsetime_stop - $parsetime_start, 5).'<br>';


Ik krijg dit op mijn scherm:
code:
1
2
3
4
$parsetime_start: 1110216151.1622

$parsetime_stop: 1110216151.1659
Parsetime: 0.00371


Daar heb je trouwens dan grote getal van je :)

[ Voor 17% gewijzigd door Verwijderd op 07-03-2005 18:26 ]


Acties:
  • 0 Henk 'm!

  • Zoefff
  • Registratie: September 2001
  • Laatst online: 12:37

Zoefff

❤ 

Ik gebruik altijd het volgende:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// Begin van de pagina
$microtime = microtime();
$split = explode(" ", $microtime);
$exact = $split[0];
$secs = date("U");
$bgtm = $exact + $secs;

// Eind van de pagina
$microend = microtime();
$split = explode(" ", $microend);
$exactend = $split[0];
$secsend = date("U");
$edtm = $exactend + $secsend;
$difference = $edtm - $bgtm;
$difference = round($difference,5);

echo $difference;

Werkt uitstekend :)


FotoblogWerkaandemuur.nlMoestuincursus.nlTwitter


Acties:
  • 0 Henk 'm!

  • Skaah
  • Registratie: Juni 2001
  • Laatst online: 16-09 18:38
http://www.codebase.nl/index.php/command/viewcode/id/254

PHP:
1
2
3
4
5
stopwatch::start('naam');
phpcode();
stopwatch::stop('naam');

echo stopwatch::getTime('naam');

[ Voor 52% gewijzigd door Skaah op 07-03-2005 18:37 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Zoefff schreef op maandag 07 maart 2005 @ 18:29:
Ik gebruik altijd het volgende:
PHP:
1
....

Werkt uitstekend :)
Microtime() returned al een string met "msec sec".

Dus waarom je dan nog 2keer date('U') doet :?

[ Voor 60% gewijzigd door Verwijderd op 07-03-2005 18:36 ]


Acties:
  • 0 Henk 'm!

  • niels_999348
  • Registratie: Maart 2003
  • Laatst online: 20-09 08:10
Verwijderd schreef op maandag 07 maart 2005 @ 18:24:
Ik heb nu dit:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# Parsetime start... 
$parsetime_start = array_sum(explode(' ', microtime())); 
echo '<br>$parsetime_start: '.$parsetime_start.'<br>';

// doe wat...
$i=0;
while( 1 ){

    if($i > 5000)
        break;

    $i++;
}

# Show parsetime...
$parsetime_stop = array_sum(explode(' ', microtime()));
echo '<br>$parsetime_stop: '.$parsetime_stop.'<br>';
echo 'Parsetime: '.round( $parsetime_stop - $parsetime_start, 5).'<br>';


Ik krijg dit op mijn scherm:
code:
1
2
3
4
$parsetime_start: 1110216151.1622

$parsetime_stop: 1110216151.1659
Parsetime: 0.00371


Daar heb je trouwens dan grote getal van je :)
$parsetime_start: 1110221735.31

$parsetime_stop: 1110221746.28
Parsetime: 1110221746.28
8)7 ik doe toch echt wat jij zei

Acties:
  • 0 Henk 'm!

  • nnomiS
  • Registratie: Oktober 2000
  • Laatst online: 19-09 22:37
Het lijkt fout te gaan bij het van elkaar aftrekken van de parse tijden kijk even of daar toevallig nix fout gaat.

ps
Dan is je parsetime toch gewoon 10,97 ms ?

Acties:
  • 0 Henk 'm!

  • Tommetje
  • Registratie: Februari 2004
  • Laatst online: 19-11-2024
Verwijderd schreef op maandag 07 maart 2005 @ 18:35:
[...]

Microtime() returned al een string met "msec sec".

Dus waarom je dan nog 2keer date('U') doet :?
msec staat voor de miliseconden en sec voor de seconden, hij returned niet letterlijk msec sec ;)

Hoi!


Acties:
  • 0 Henk 'm!

Verwijderd

niels_999 schreef op maandag 07 maart 2005 @ 19:58:
[...]
$parsetime_start: 1110221735.31

$parsetime_stop: 1110221746.28
Parsetime: 1110221746.28
8)7 ik doe toch echt wat jij zei
Lijkt mij dat het toch echt aan jou server ligt?

Ik hebt php 4 de nieuwste geloof ik.

Acties:
  • 0 Henk 'm!

Verwijderd

Tommetje schreef op maandag 07 maart 2005 @ 20:27:
[...]

msec staat voor de miliseconden en sec voor de seconden, hij returned niet letterlijk msec sec ;)
zo staat het toch echt in de handleiding: http://nl3.php.net/manual/nl/function.microtime.php

letterlijk :)

Ik bedoelde eigelijk dit:
PHP:
1
2
3
$exact = $split[0]; 
$secs = date("U"); 
$bgtm = $exact + $secs;


waarom niet:
PHP:
1
$bgtm =  $split[0] + $split[1];


In $split[1] zal namelijk al date("U") :Y)

[ Voor 28% gewijzigd door Verwijderd op 07-03-2005 20:38 ]


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03:42

.oisyn

Moderator Devschuur®

Demotivational Speaker

Voor de zoveelste keer: parsen betekent het begrijpen van combinaties van woorden, en is slechts een enkele stap in het hele interpretatie-proces. Jij bent niet geinteresseerd in de parsetijd, jij bent geinteresseerd in de uitvoertijd. :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
offtopic:
Afbeeldingslocatie: http://www.tweakers.net/ext/f/53594/full.gif

Dus dit is écht alleen de tijd die nodig was om het script te "begrijpen"? :P
Ik begrijp dat parsen maar een klein onderdeel is van een groter geheel, maar ergens ben ik ook wel voor het "vage" idee van parsen zoals het vaker bedoeld wordt, al is het dan niet correct...

[ Voor 45% gewijzigd door RobIII op 07-03-2005 22:16 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03:42

.oisyn

Moderator Devschuur®

Demotivational Speaker

RobIII schreef op maandag 07 maart 2005 @ 22:15:
offtopic:
[afbeelding]

Dus dit is écht alleen de tijd die nodig was om het script te "begrijpen"? :P
Ik hap even: nee, dat is dus foute informatie ;)
Mja, ik ageer nogal tegen het feit dat het woord 'parsen' te pas en te onpas gebruikt wordt, alsof het een synoniem is voor 'verwerken' oid 8)7

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

Verwijderd

.oisyn schreef op maandag 07 maart 2005 @ 22:35:
[...]


Ik hap even: nee, dat is dus foute informatie ;)
Mja, ik ageer nogal tegen het feit dat het woord 'parsen' te pas en te onpas gebruikt wordt, alsof het een synoniem is voor 'verwerken' oid 8)7
Maar, 'Executiontime' is lang niet zo stoer als 'Parsetime' :)

[ Voor 21% gewijzigd door Verwijderd op 07-03-2005 23:39 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Me dunkt dat de TS hier wel iets mee kan?

http://www.pear.php.net/package/Benchmark/
Pagina: 1