Profiler

Door Jelmer -, 21 jaar geleden, 3.812x bekeken

Met deze klasse (nouja, klasse, hij is nog static, wat in dit geval betekend dat je maar 1 instantie tegelijk kan draaien) kan je per regel van je code de tijd opnemen die de PHP parser erover doet, en hoe vaak de PHP parser eroverheen leest. De uitvoer kan ik niet echt verklaren omdat ik de interne werking van de PHP parser niet ken.

Deze klasse is vooral handig om binnen grote bestanden van bijvoorbeeld een CMS de bottlenecks te vinden. Let niet op de tijden zelf, maar op de verschillen in tijd aangezien het profilen zelf ook nog aardig wat tijd in beslag neemt.

De te profilen code zet je binnen een declare-lus. Voordat je die lus start roep je eerst Profiler::instantiate() aan zodat register_tick_function() aangeroepen wordt. Achteraf, dus na de lus roep je dan weer Profiler::printReport() aan om de uitvoer te (ver)krijgen.

Deze klasse maakt gebruik van WebFX charts om een mooi beeld te genereren. Uiteraard kan je dat allemaal aanpassen naar tekst of een plaatje, wat je wilt. Maar wil je dit voorbeeld letterlijk overnemen, dan zal je dit zip-bestand moeten hebben en de nodige code opnemen alvorens er een grafiek verschijnt. Je kan ook even de bron vanmijn voorbeeld erbij pakken.
(Het zou het mooist zijn als er aparte klassen waren voor de uitvoer, maar aangezien het voor mij maar een gewoon quick & dirty hulpmiddeltje is hechte ik daar niet zoveel belang aan.)

Het beste resultaat krijg je met SQL-queries, XML, veel preg_* enzovoord aangezien die veel tijd innemen en die dus ook als eerste moeten worden nagelopen bij het optimaliseren van de code.

Let op: Een declare-lus kan niet meerdere bestanden omvatten. Includes worden dus niet geprofiled, of in ieder geval, ik heb hem nog niet zover gekregen.

Voorbeeld: http://phphulp.ikhoefgeen.nl/profiler/Profiler.php

Gesponsorde koppelingen

PHP script bestanden

  1. profiler

 

Er zijn 5 reacties op 'Profiler'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Niek s
niek s
21 jaar geleden
 
0 +1 -0 -1
bij je voorbeeld is de grafiek steeds anders!!??
Jelmer -
Jelmer -
21 jaar geleden
 
0 +1 -0 -1
Klopt, hij is niet echt betrouwbaar op zulke kleine tijdsverschillen (heb hem op lussen van 50 staan aangezien ik mijn hoster niet al te veel tot last wil zijn)

Probeer hem zelf maar eens op wat grotere lussen of wat gevarieerdere code met functies & queries. Ik heb hem in een framework in gebruik en daar geeft hij toch al aardig betrouwbare resultaten. SQL is daar duidelijk het meest etend :)
- -
- -
21 jaar geleden
 
0 +1 -0 -1
Ha, mooi speelgoed :D Kga het zo is ff testen denk ik =P
Bo az
Bo az
21 jaar geleden
 
0 +1 -0 -1
Ik was net in PHP 5 superboek over optimalisatie aan het lezen, maar ik vond de manier die ze daar gebruikte nogal omslachtig. Ik ga dit zeker eens testen, heb nog niet naar de exacte werking gekeken, staan een aantal functies in die ik nog niet ken(de).

Maar waarom gebruik je output buffering en zet je het niet gewoon in een variabele?
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Jelmer -
Jelmer -
21 jaar geleden
 
0 +1 -0 -1
Dat is nog van 'vroeger' toen het iets anders werkte, dus eigenlijk niet echt met een speciale reden. Ik zal het even omzetten naar de standaard manier.

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

Inhoudsopgave

  1. profiler

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.