Table des matières
- Partie 1
Mesurez la performance d'une application Symfony
- Partie 2
Profilez vos applications avec Blackfire.io
- Partie 3
Testez la non-régression de performance avec Blackfire.io
Effectuez vos propres profils de mesure
Nous l'avons vu dans le chapitre précédent, le Web Profiler est capable de fournir de nombreuses informations, notamment grâce à son onglet Performance qui nous intéresse particulièrement.
Mais comment le Profiler retrouve ces informations et comment peut-on créer ses propres entrées ?
Eh bien, à l'aide du composant StopWatch !
StopWatch, le composant pour profiler vos applications PHP simplement
Le composant et son intégration au sein du framework vous permettent de profiler votre application de façon simple sans avoir à utiliser microtime()
. Mettez à jour l'action de contrôleur précédemment utilisé pour utiliser le service debug.stopwatch :
<?php
public function indexAction(Request $request)
{
if ($this->container->has('debug.stopwatch')) {
$stopwatch = $this->get('debug.stopwatch');
$stopwatch->start('sleep action');
sleep(5);
$stopwatch->stop('sleep action');
}
return $this->render('default/index.html.twig', [
'base_dir' => realpath($this->getParameter('kernel.project_dir')).DIRECTORY_SEPARATOR,
]);
}
Parcourez à nouveau l'onglet Performance du Profiler après avoir accédé à la page. Vous devriez découvrir une nouvelle entrée "sleep action" :

Allez plus loin avec le composant StopWatch
Imaginons une situation où, par exemple, nous voudrions chronométrer le temps mis par PHP pour boucler sur chaque élément d'une boucle et trouver si le problème de performance est lié à un item particulier. C'est tout à fait possible avec le composant StopWatch qui définit la notion de "lap" ("tour" en anglais).
Adaptons à nouveau l'exemple précédent pour essayer cette fonctionnalité :
<?php
if ($this->container->has('debug.stopwatch')) {
$stopwatch = $this->get('debug.stopwatch');
$stopwatch->start('sleeps');
for ($i = 1; $i < 10; $i++) {
sleep(rand(1, 3));
$stopwatch->lap('sleeps');
}
$stopwatch->stop('sleeps');
}
Voici le profil correspondant :

- Formations jusqu’à 100 % financées
- Date de début flexible
- Projets professionnalisants
- Mentorat individuel