Mit diesem Tool können Sie die Leistung überwachen und Speicherlecks sowie inkonsistentes Leistungsverhalten Ihrer Anwendung im Laufe der Zeit erkennen.
Für die grundlegende Profilerstellung können Sie einen Profilerstellungshelfer verwenden. Mit der Profiling
können Sie ein Profil zwischen start
und finish
erstellen.
namespace PetrKnap Profiler ;
$ profiling = Profiling:: start ();
// do something
$ profile = $ profiling -> finish ();
printf ( ' It took %.1f s to do something. ' , $ profile -> getDuration ());
Das Profiling
ist einfach und kann nicht einfach ein- und ausgeschaltet werden . Deshalb wurde ein Profiler zum Zwecke der hartcodierten komplexeren Profilerstellung erstellt.
Fordern Sie einen Profiler als Abhängigkeit an und rufen Sie eine profile
dafür auf.
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 (),
));
}
Es kann einfach über den DI aktiviert oder deaktiviert werden, der entweder den Profiler
oder den NullProfiler
bereitstellt.
namespace PetrKnap Profiler ;
echo doSomething ( new Profiler ());
echo doSomething ( new NullProfiler ());
Wenn Sie die aktuellen Werte messen müssen, rufen Sie einfach die Methode takeSnapshot
im Profiling
oder einen Profiler auf.
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 ()));
Wenn Sie es automatisieren möchten, erstellen Sie einen Schnappschuss bei Häkchen. Oder Sie können eine praktischere Kaskadenprofilierung verwenden.
Für eine höhere Präzision können Sie bei jedem N
Tick einen Schnappschuss erstellen.
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 ()));
Dies führt zu einer sehr detaillierten Codeverfolgung , was die Leistung der überwachten Anwendung beeinträchtigen kann.
Die profile
stellt Ihnen einen verschachtelten Profiler zur Verfügung, den Sie für detailliertere Kaskadenprofilerstellung verwenden können.
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 ()));
Führen Sie composer require petrknap/profiler
um es zu installieren. Sie können dieses Projekt durch eine Spende unterstützen. Das Projekt ist unter den Bedingungen von LGPL-3.0-or-later
lizenziert.