เครื่องมือนี้ช่วยให้คุณตรวจสอบประสิทธิภาพและตรวจจับการรั่วไหลของหน่วยความจำ รวมถึงพฤติกรรมด้านประสิทธิภาพที่ไม่สอดคล้องกันของแอปพลิเคชันของคุณเมื่อเวลาผ่านไป
สำหรับการจัดทำโปรไฟล์ขั้นพื้นฐาน คุณสามารถใช้ตัวช่วยการทำโปรไฟล์ได้ Profiling จะช่วยให้คุณสามารถกำหนดโปรไฟล์ระหว่างการเรียกวิธีการ start และ finish
namespace PetrKnap Profiler ;
$ profiling = Profiling:: start ();
// do something
$ profile = $ profiling -> finish ();
printf ( ' It took %.1f s to do something. ' , $ profile -> getDuration ()); Profiling ทำได้ง่ายและ ไม่สามารถเปิดและปิดได้ อย่างง่ายดาย ดังนั้นผู้สร้างโปรไฟล์จึงถูกสร้างขึ้นเพื่อวัตถุประสงค์ในการฮาร์ดโค้ดโปรไฟล์ที่ซับซ้อนมากขึ้น
ขอprofilerเป็นการพึ่งพาและเรียกใช้เมธอด profile
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 (),
));
} สามารถเปิดใช้งานหรือปิดใช้งานได้อย่างง่ายดาย ผ่าน DI ซึ่งมี Profiler หรือ NullProfiler
namespace PetrKnap Profiler ;
echo doSomething ( new Profiler ());
echo doSomething ( new NullProfiler ()); หากคุณต้องการ วัดค่าปัจจุบัน เพียงเรียกใช้เมธอด takeSnapshot บน Profiling หรือตัวสร้างโปรไฟล์
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 ()));หากคุณต้องการทำให้เป็นอัตโนมัติ ให้ถ่ายภาพโดยติ๊ก หรือคุณสามารถใช้การทำโปรไฟล์แบบคาสเคดที่ใช้งานได้จริงมากขึ้น
เพื่อความแม่นยำยิ่งขึ้น คุณสามารถถ่าย ภาพสแนปชอตของเครื่องหมาย N แต่ละตัวได้
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 ()));ซึ่งจะส่งผลให้มี การติดตามโค้ดที่มีรายละเอียดมาก ซึ่งสามารถลดประสิทธิภาพของแอปพลิเคชันที่ได้รับการตรวจสอบได้
เมธอด profile จะให้ตัวสร้างโปรไฟล์แบบซ้อนซึ่งคุณสามารถใช้สำหรับการทำโปรไฟล์แบบคาสเคดที่มีรายละเอียดมากขึ้น
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 ())); เรียกใช้ composer require petrknap/profiler เพื่อติดตั้ง คุณสามารถสนับสนุนโครงการนี้ผ่านการบริจาค โครงการนี้ได้รับอนุญาตภายใต้เงื่อนไขของ LGPL-3.0-or-later