Timer class v2 2008

Door , 16 jaar geleden, 2.203x bekeken

Deze classe heb ik laatst geschreven voor mezelf, om tijdens het debuggen tijden te kunnen registreren. Het is een vrij eenvoudige classe maar erg handig vind ik zelf!

Gesponsorde koppelingen

PHP script bestanden

  1. timer-class-v2-2008

 

Er zijn 12 reacties op 'Timer class v2 2008'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Leroy Boerefijn
Leroy Boerefijn
16 jaar geleden
 
0 +1 -0 -1
erg leuk gedaan!
alleen is het voor de totale laadtijd van de pagina, of over een bepaald stukje code?

en heb je ook een online voorbeeld?
en heb je misschien ook een voorbeeld over hoe je het moet gebruiken?

gr. leroy
Frank -
Frank -
16 jaar geleden
 
0 +1 -0 -1
Offtopic: laadtijd betekent voor mij de tijd dat de browser er over doet om een complete pagina op te halen. Dit zegt niks over de tijd die de server nodig heeft om een pagina te parsen. Stel dat ik een langzame verbinding heb.
Bo az
Bo az
16 jaar geleden
 
0 +1 -0 -1
Als je commentaar op de standaard manier zou doen. Zou je met phpdoc documentatie kunnen genereren.

Aan je code te zien gebruik je php5, dan zou je de methode
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
    private function timeNow()
    {

    $nTime = microtime();
    $nTime = explode(" ",$nTime);
    $nTime = $nTime[1] + $nTime[0];
    return $nTime;
    }

?>

kunnen vervangen door:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
    private function timeNow()
    {

    return microtime(true);
    }

?>


Verder denk ik dat als je er een methode in maakt die het resultaat weergeeft, (wat je nu nog buiten de class doet) dat er hier best wel mensen zijn die 'm kunnen gebruiken. (je zou zelfs __toString kunnen gebruiken)


16 jaar geleden
 
0 +1 -0 -1
pgFrank dat is dan een communicatie verschil spijt me voor je dat ik de classe zo niet gemaakt heb. Als iemand een modem verbinding heeft is het tenslotte zijn probleem dat z'n internet traag is daar ga ik niet voor debuggen ;) en ja het kan ook nog aan de server drukte leggen maar dat probleem ligt bij je zelf. Ik geef je wel gelijk dat je er meerdere parameters bij kan betrekken. Misschien zou je die er zelf aan kunnen toevoegen?
Hipska BE
Hipska BE
16 jaar geleden
 
0 +1 -0 -1
zou het niet logischer zijn om bij de tussentijden relatief te maken ipv de totale tijd?

dus bij jou:
Lus1: 2s
Lus2: 4s
Lus3: 6s
Totaal: 7s

zou mooier zijn als:
Lus1: 2s
Lus2: 2s
Lus3: 2s
Totaal: 7s

nog een opmerking waarom begint je class met 'cls' ?
doe jij ook fncFunctie(); $varVariabele; $arrayArray; ?
Gewoon weglaten...


16 jaar geleden
 
0 +1 -0 -1
Hipska de reden dat ik dat doe is dat ik kan zien aan de naam of het een classe is die ik zelf geschreven heb, van iemand heb of een bestaande classe is. Zal het in het vervolg wel weg laten....
Hipska BE
Hipska BE
16 jaar geleden
 
0 +1 -0 -1
Ik heb zelf even snel een klasse geschreven die hetzelfde doet, maar beetje mooier vind ik.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php

class ParseTime {
    
    private $startTime = 0;
    private $breakPoints = array();
    private $breakPointTime = 0;
    
    public function __construct(){
        $this->startTime = microtime(true);
        $this->breakPointTime = $this->startTime;
    }

    
    public function breakPoint( $name = null ){
        if(is_null($name)) $name = 'BreakPoint'.(count($this->breakPoints)+1);
        $nowTime = microtime(true);
        $this->breakPoints[$name] = $nowTime - $this->breakPointTime;
        $this->breakPointTime = $nowTime;
    }

    
    public function __destruct(){
        $endTime = microtime(true);
        echo '<pre class="parsetime">ParseTime:'.PHP_EOL;
        foreach($this->breakPoints as $name => $time) echo $name.":\t".$time.PHP_EOL;
        echo "Total:\t". ($endTime - $this->startTime).'</pre>';
    }
    
}


?>


Zo voer je hem uit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php

// start debuggen
$debug = new ParseTime();

// lange loop
for($i = 0; $i < 999999; $i++ );
$debug->breakPoint(); // hier wordt een breakpoint gemaakt

// nog een lange loop

for($i = 0; $i < 999999; $i++ );
$debug->breakPoint();

// nog wat code
unset($i);
$debug->breakPoint('unset'); // een benaamde breakpoint

?>

Meer hoef je niet te doen in je scripts

Voorbeelduitvoer:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
ParseTime:
BreakPoint1:    0.93393707275391
BreakPoint2:    0.90112400054932
unset:    6.3896179199219E-05
Total:    1.8352451324463
Jan geen
Jan geen
16 jaar geleden
 
0 +1 -0 -1
Ik vind ook dat je nogal aparte benamingen gebruikt, wat betekend dit,
$m_nStartTime? En dan doel ik op die m_n.

Was al gezegd maar Javadoc tags zijn een stuk gemakkelijker
 
0 +1 -0 -1
Wat erg mooi zou zijn om dit systeem uit te breiden.

Waarbij ik mij voorstel:
- Dat ik een script upload
- En vervolgens de broncode hiervan krijg te zien, met per regel (of functie, lus, wat men maar wil) erbij hoelang PHP erover deed om deze regel uit te voeren.

Dus dat je script automatisch wordt opgedeeld, en "doorgemeten". Zo kun je een script-optimizer bouwen ;)
Hipska BE
Hipska BE
16 jaar geleden
 
0 +1 -0 -1
@ andries:
deze maakt een grafiek van de tijd per regel code in een php bestand: http://www.phphulp.nl/php/scripts/4/732/
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Kees Schepers
kees Schepers
16 jaar geleden
 
0 +1 -0 -1
@Rik: dat heeft hij waarschijnlijk uit het PHP5 superboek waar ze je vertellen dat je dit op zo'n manier zou moeten doen. Ik prefereer toch met PHPDoc comments waarmee je ook de scope en type van variabelen kan zien.

Verder vind ik het wel een nette klasse alleen benamingen zijn niet echt prominent. Ik zou het profiler noemen omdat je stukken code profileert. De methode waarop hij gebruikt wordt is wel handig!

@Boaz: grappig ik heb ook een profiler klasse en doe het op precies dezelfde manier haha.. waarschijnlijk hebben we het allebei ergens van afgekeken of is het puur toeval :)

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. timer-class-v2-2008

Labels

  • Geen tags toegevoegd.

Navigatie

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.