Alat ini memungkinkan Anda memantau kinerja dan mendeteksi kebocoran memori serta perilaku kinerja aplikasi Anda yang tidak konsisten dari waktu ke waktu.
Untuk pembuatan profil dasar, Anda dapat menggunakan bantuan pembuatan profil. Profiling
akan memungkinkan Anda membuat profil antara panggilan metode start
dan finish
.
namespace PetrKnap Profiler ;
$ profiling = Profiling:: start ();
// do something
$ profile = $ profiling -> finish ();
printf ( ' It took %.1f s to do something. ' , $ profile -> getDuration ());
Profiling
sederhana dan tidak dapat dihidupkan dan dimatikan dengan mudah. Jadi profiler dibuat untuk tujuan pembuatan profil yang lebih kompleks dengan kode keras.
Minta profiler sebagai ketergantungan dan panggil metode profile
di dalamnya.
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 (),
));
}
Ini dapat dengan mudah diaktifkan, atau dinonaktifkan melalui DI , yang menyediakan Profiler
atau NullProfiler
.
namespace PetrKnap Profiler ;
echo doSomething ( new Profiler ());
echo doSomething ( new NullProfiler ());
Jika Anda perlu mengukur nilai saat ini , panggil saja metode takeSnapshot
di Profiling
, atau profiler.
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 ()));
Jika Anda ingin mengotomatiskannya maka ambil snapshot saat dicentang. Atau Anda dapat menggunakan pembuatan profil kaskade yang lebih praktis.
Untuk presisi yang lebih baik, Anda dapat mengambil snapshot pada setiap 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 ()));
Hal ini akan menghasilkan pelacakan kode yang sangat detail , yang dapat menurunkan kinerja aplikasi yang dipantau.
Metode profile
memberi Anda profiler bertingkat yang dapat Anda gunakan untuk pembuatan profil kaskade lebih detail.
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 ()));
Jalankan composer require petrknap/profiler
untuk menginstalnya. Anda dapat mendukung proyek ini melalui donasi. Proyek ini dilisensikan berdasarkan ketentuan LGPL-3.0-or-later
.