เมื่อเขียนโปรแกรม JavaScript หากคุณต้องการทราบเวลาดำเนินการของรหัสบางส่วนคุณสามารถใช้ console.time () อย่างไรก็ตามเมื่อวิเคราะห์โปรแกรม JavaScript ที่มีตรรกะที่ซับซ้อนมากขึ้นและพยายามค้นหาคอขวดประสิทธิภาพ console.time () ไม่สามารถใช้งานได้ - การวิเคราะห์เชิงลึกของการทำงานของโปรแกรม JavaScript ที่มีตรรกะที่ซับซ้อนมากขึ้นหมายถึงการแทรกคำสั่งคอนโซลจำนวนมาก () สำหรับการปรับแต่งโปรแกรม JavaScript ด้วยตรรกะที่ซับซ้อนวิธีที่ถูกต้องคือใช้ console.profile ()
การสนับสนุนเบราว์เซอร์
Firefox, Google Chrome และ Safari ซึ่งติดตั้งปลั๊กอิน Firebug, คำสั่ง Support Console.Profile () ทั้งหมดและเวอร์ชันล่าสุดของ IE และ Opera ยังมีฟังก์ชั่นโปรไฟล์ การใช้คอนโซล profile () บนเบราว์เซอร์ที่สำคัญหลายตัวคล้ายกัน บทความนี้แนะนำการใช้คอนโซล Profile () ใน Firebug เท่านั้น สิ่งหนึ่งที่น่าสังเกตคือถ้าคุณใช้คอนโซล Firebug เพื่อเขียนรหัสทดลอง JavaScript โดยตรงแล้ว console.profile () ไม่ถูกต้อง
การใช้คอนโซล. profile ()
การใช้ console.profile () นั้นง่ายมาก: แทรกคอนโซล profile () ที่คุณต้องเริ่มต้นโปรไฟล์และแทรกคอนโซล profileend () ที่คุณสิ้นสุดโปรไฟล์ รหัสต่อไปนี้เป็นตัวอย่าง:
การคัดลอกรหัสมีดังนี้:
ฟังก์ชัน dotask () {
Dosubtaska (1,000);
Dosubtaska (100000);
Dosubtaskb (10,000);
Dosubtaskc (1,000,10000);
-
ฟังก์ชั่น dosubtaska (นับ) {
สำหรับ (var i = 0; i <count; i ++) {}
-
ฟังก์ชั่น dosubtaskb (นับ) {
สำหรับ (var i = 0; i <count; i ++) {}
-
ฟังก์ชั่น dosubtaskc (Countx, County) {
สำหรับ (var i = 0; i <countx; i ++) {
สำหรับ (var j = 0; j <county; j ++) {}
-
-
console.profile ();
Dotask ();
console.profileend ();
ดำเนินการ console.profile () ก่อนที่จะเรียกใช้ฟังก์ชัน dotask () หลังจากฟังก์ชั่น Dotask () เสร็จสิ้นข้อมูลโดยละเอียดในระหว่างกระบวนการทำงานของฟังก์ชัน Dotask () สามารถรวบรวมได้ คุณสามารถดูได้ในคอนโซลของ Firebug:
จากผลลัพธ์เราจะเห็นว่าเวลาโปรไฟล์คือทั้งหมด 101.901ms ซึ่งเกี่ยวข้องกับการเรียกใช้ฟังก์ชัน 5 รายการ ชื่อเริ่มต้นของผลลัพธ์คือ "โปรไฟล์" ซึ่งสามารถปรับแต่งได้โดยการส่งพารามิเตอร์ไปยังฟังก์ชันคอนโซล. profile () ตัวอย่างเช่นการใช้ console.profile ("โปรไฟล์ทดสอบ") สามารถเปลี่ยนชื่อของโปรไฟล์นี้เป็น "โปรไฟล์ทดสอบ" ในผลลัพธ์ซึ่งมีประโยชน์อย่างยิ่งเมื่อกระบวนการโปรไฟล์หลายรายการถูกดำเนินการพร้อมกัน ความหมายของแต่ละคอลัมน์ในผลลัพธ์โปรไฟล์เฉพาะคือ:
1. ฟังก์ชั่น ชื่อฟังก์ชั่น
2. โทร. จำนวนการโทร ตัวอย่างเช่นในตัวอย่างข้างต้นฟังก์ชัน Dosubtaska () จะถูกดำเนินการสองครั้ง
3. เปอร์เซ็นต์ เปอร์เซ็นต์ของเวลาที่ใช้โดยฟังก์ชั่นนี้เรียกในเวลาโดยรวม
4. เวลาของเรา ไม่รวมเวลาที่ใช้ในการเรียกใช้ฟังก์ชั่นอื่น ๆ ระยะเวลาที่ใช้โดยฟังก์ชั่นเอง ตัวอย่างเช่นในตัวอย่างข้างต้น Dotask () ไม่ต้องสงสัยเลยว่าใช้เวลานานในการดำเนินการ แต่เนื่องจากต้องใช้เวลาตลอดเวลาในการโทรหาฟังก์ชั่นอื่น ๆ มันไม่ได้ใช้เวลามากเพียง 0.097ms
5. เวลา ตรงกันข้ามกับเวลาของตัวเองการคำนวณเวลาที่ใช้เวลาทั้งหมดของฟังก์ชั่นไม่ได้รับการพิจารณาเมื่อทำการเรียกปัจจัยไปยังฟังก์ชั่นอื่น ๆ ในตัวอย่างข้างต้นฟังก์ชั่น Dotask () จะดำเนินการ 101.901ms สำหรับเวลาและเวลาของตัวเองคุณยังสามารถสรุปได้ว่า: หากเวลามีขนาดใหญ่กว่าเวลาของตัวเองการโทรไปยังฟังก์ชั่นอื่น ๆ จะเกี่ยวข้องกับฟังก์ชั่น
6.Avg. สูตรการคำนวณคือ: AVG = เวลา/การโทร ในตัวอย่างข้างต้นฟังก์ชั่น Dosubtaska () ถูกดำเนินการสองครั้งและเวลาทั้งหมดคือ 1.054ms ดังนั้นเวลารวมเฉลี่ยคือ 0.527ms
7. นาที. ใช้เวลาน้อยที่สุดในการเรียกใช้ฟังก์ชั่นนี้ ตัวอย่างเช่นในตัวอย่างข้างต้นฟังก์ชั่น Dosubtaska () ถูกดำเนินการสองครั้งและใช้เวลาน้อยที่สุดคือการโทรที่ใช้เวลาน้อยลงในการใช้จ่าย 0.016ms
8.MAX เวลาสูงสุดในการเรียกใช้ฟังก์ชันนี้ ตัวอย่างเช่นในตัวอย่างข้างต้นฟังก์ชั่น Dosubtaska () ถูกดำเนินการสองครั้งและกระบวนการใช้เวลานานที่สุดคือการโทรที่ใช้เวลามากขึ้นในการใช้จ่าย 1.038ms
9.File. ไฟล์ js ที่ฟังก์ชั่นอยู่
การใช้ปุ่มโปรไฟล์ใน Firebug
นอกเหนือจากการแทรกคำสั่ง console.profile () ลงในรหัส JavaScript แล้ว Firebug ยังมีปุ่มโปรไฟล์เป็นแบบไดนามิกและในรหัส JavaScript โปรไฟล์แบบเรียลไทม์ในหน้า ตำแหน่งปุ่มคือ:
เมื่อต้องการโปรไฟล์คุณสามารถกดปุ่มและหากการดำเนินการหน้าถัดไปทริกเกอร์รหัส JavaScript ใด ๆ Firebug จะบันทึก ในตอนท้ายของกระบวนการโปรไฟล์เพียงกดปุ่มอีกครั้ง ผลลัพธ์สุดท้ายสอดคล้องกับผลลัพธ์ที่ได้จากการแทรกคำสั่ง console.profile ()