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 !
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" :

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 :
