Esta herramienta le permite monitorear el rendimiento y detectar pérdidas de memoria, así como un comportamiento de rendimiento inconsistente de su aplicación a lo largo del tiempo.
Para la creación de perfiles básicos, puede utilizar un asistente de creación de perfiles. La Profiling
le permitirá crear perfiles entre las llamadas a los métodos start
y finish
.
namespace PetrKnap Profiler ;
$ profiling = Profiling:: start ();
// do something
$ profile = $ profiling -> finish ();
printf ( ' It took %.1f s to do something. ' , $ profile -> getDuration ());
La Profiling
es simple y no se puede activar y desactivar fácilmente. Por lo tanto, se creó un generador de perfiles con el propósito de codificar perfiles más complejos.
Solicite un generador de perfiles como dependencia y llame a un método profile
en él.
namespace PetrKnap Profiler ;
function doSomething ( ProfilerInterface $ profiler ): string {
return $ profiler -> profile ( function (): string {
return ' something ' ;
})-> process ( fn ( ProfileInterface $ profile ) => printf (
' It took %.1f s to do something. ' ,
$ profile -> getDuration (),
));
}
Se puede habilitar o deshabilitar fácilmente a través del DI , que proporciona Profiler
o NullProfiler
.
namespace PetrKnap Profiler ;
echo doSomething ( new Profiler ());
echo doSomething ( new NullProfiler ());
Si necesita medir los valores actuales , simplemente llame al método takeSnapshot
en Profiling
o a un generador de perfiles.
namespace PetrKnap Profiler ;
$ profiling = Profiling:: start ();
// do something
$ profiling -> takeSnapshot ();
// do something more
$ profile = $ profiling -> finish ();
printf ( ' There are %d memory usage records. ' , count ( $ profile -> getMemoryUsages ()));
Si desea automatizarlo, tome una instantánea al marcar. O puede utilizar un perfilado en cascada más práctico.
Para mayor precisión, puede tomar una instantánea de cada N
tick .
declare (ticks= 2 ); // this declaration is important (N=2)
namespace PetrKnap Profiler ;
$ profiling = Profiling:: start (takeSnapshotOnTick: true );
( fn () => ' something ' )();
$ profile = $ profiling -> finish ();
printf ( ' There are %d memory usage records. ' , count ( $ profile -> getMemoryUsages ()));
Esto dará como resultado un seguimiento del código muy detallado , que puede degradar el rendimiento de la aplicación supervisada.
El método profile
le proporciona un generador de perfiles anidado que puede utilizar para crear perfiles en cascada más detallados.
namespace PetrKnap Profiler ;
$ profile = ( new Profiler ())-> profile ( function ( ProfilerInterface $ profiler ): void {
// do something
$ profiler -> profile ( function (): void {
// do something more
});
});
printf ( ' There are %d memory usage records. ' , count ( $ profile -> getMemoryUsages ()));
Ejecutar composer require petrknap/profiler
para instalarlo. Puedes apoyar este proyecto mediante donación. El proyecto tiene licencia según los términos de LGPL-3.0-or-later
.