เครื่องมือนี้ช่วยให้คุณตรวจสอบประสิทธิภาพและตรวจจับการรั่วไหลของหน่วยความจำ รวมถึงพฤติกรรมด้านประสิทธิภาพที่ไม่สอดคล้องกันของแอปพลิเคชันของคุณเมื่อเวลาผ่านไป
สำหรับการจัดทำโปรไฟล์ขั้นพื้นฐาน คุณสามารถใช้ตัวช่วยการทำโปรไฟล์ได้ 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