วิธีดูว่าส่วนใดของรหัสของคุณทำงานบ่อยที่สุด?


11

ฉันต้องการที่จะเห็นว่าโค้ดใดในหลายพันบรรทัดของซอร์สโค้ดที่ใช้บ่อยที่สุดและใช้เวลานานที่สุด วัตถุประสงค์ของสิ่งนี้จะเป็นการเพิ่มประสิทธิภาพ

ความสามารถในการดูว่าส่วนใดของรหัสที่เรียกใช้บ่อยที่สุดนั้นมีความสำคัญต่อการปรับให้เหมาะสมเพราะส่วนเหล่านั้นเป็นตำแหน่งที่ฉันควรจะเร่งความเร็ว ในเวลาเดียวกันแน่นอนว่าโค้ดบางตัวทำงานบ่อย แต่ไม่ต้องใช้เวลาเลยดังนั้นจึงเป็นเรื่องสำคัญที่จะต้องเห็นว่าโค้ดใดที่ใช้เวลานานที่สุด

ฉันเดาว่าสิ่งที่ดีที่สุดของทั้งสองโลกจะเป็นโปรแกรมที่เพิ่มจำนวนเวลาที่โค้ดต้องใช้รวมถึงทุกครั้งที่มันทำงาน (เพื่อหาว่าอะไรทำให้โค้ดของคุณช้าลงโดยรวมมากที่สุด) มีเครื่องมือประเภทนี้หรือไม่?


คุณมีความต้องการสำหรับระบบปฏิบัติการหรือภาษาการเขียนโปรแกรมหรือไม่?
Mawg กล่าวว่าคืนสถานะโมนิก้า

คำตอบ:


15

สิ่งที่คุณกำลังมองหาคือการทำโปรไฟล์ :

ในวิศวกรรมซอฟต์แวร์การทำโปรไฟล์ ("การทำโปรไฟล์โปรแกรม", "การทำโปรไฟล์ซอฟต์แวร์") เป็นรูปแบบของการวิเคราะห์โปรแกรมแบบไดนามิกที่วัดเช่นพื้นที่ (หน่วยความจำ) หรือความซับซ้อนของเวลาของโปรแกรมการใช้คำแนะนำเฉพาะหรือความถี่และ ระยะเวลาของการเรียกใช้ฟังก์ชัน การใช้ข้อมูลการทำโปรไฟล์ที่ใช้กันมากที่สุดคือการช่วยเหลือการเพิ่มประสิทธิภาพของโปรแกรม

มีแอพพลิเคชั่นหลายอย่าง บางครั้งสิ่งเหล่านี้สร้างขึ้นใน IDE เอง Netbeans ide เป็นเครื่องมือหนึ่งที่มีตัวสร้าง โปรไฟล์ป้อนคำอธิบายรูปภาพที่นี่

อีกเครื่องมือดังกล่าวเป็นVM ภาพ

ป้อนคำอธิบายรูปภาพที่นี่

โปรไฟล์สามารถทำงานได้หลายวิธี - และควรตระหนักถึงความแตกต่าง วิธีการหนึ่งคือทุกวินาทีเพื่อถ่ายภาพของเธรดที่กำลังทำงานอยู่และดูว่ามีการเรียกใช้เมธอดใดสำหรับแต่ละเธรดในปัจจุบัน สิ่งนี้ใช้การสุ่มตัวอย่างของสิ่งที่อยู่ข้างนอก

อีกวิธีหนึ่งคือการใช้ java bytecodeเพื่อรายงานเวลาเริ่มต้นและหยุดกลับไปที่แอปพลิเคชันอื่น

การเขียน profiler นั้นไม่ยากอย่างยิ่งสำหรับจาวาที่มีทักษะเพียงคนเดียว IBM มีบทความเกี่ยวกับการเขียน profiler ของคุณเอง (พร้อม source code!) หนึ่งนี้จะขึ้นอยู่กับJava อินเตอร์แอคที Profiler

มีตัวสร้างโปรไฟล์จำนวนมาก - ทั้งฟรีและเชิงพาณิชย์ (แล้ว profiler เชื่อมต่อกับการใช้งานอินสแตนซ์ JVM ที่สามารถรายงานกลับไปหาคุณ (อีเมลหรือการแจ้งเตือนอื่น ๆ ) เมื่อวิธีใดเกินกว่าที่คาดไว้ โปรแกรมที่รายงานกลับเมื่อคำขอของเว็บใช้เวลานานเกินไป - มีประวัติประวัติสำหรับคำขอนั้นถูกบันทึกเพื่อการตรวจสอบในภายหลังหรือไม่?) คุณเพียงแค่ต้องรู้ว่าคุณกำลังมองหาอะไรเพื่อเริ่มค้นหาพวกเขาและไปจากที่นั่น

เมื่อคุณมีผู้สร้างโปรไฟล์แล้วคุณจะสามารถตีความผลลัพธ์การทำโปรไฟล์ได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.