กลับไปหน้าบทความ

อ่าน 6 นาที

การวิเคราะห์ประสิทธิภาพ (การเขียนโปรแกรมคอมพิวเตอร์)

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

การวิเคราะห์ประสิทธิภาพ (การเขียนโปรแกรมคอมพิวเตอร์)

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

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

กิจกรรมของโครงการรวมกลุ่ม

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

การใช้เครื่องมือวิเคราะห์ประสิทธิภาพ

ผลลัพธ์เชิงกราฟิกจากโปรแกรม วิเคราะห์ประสิทธิภาพ CodeAnalyst

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

— อะตอม, พีแอลดีไอ

ผลลัพธ์จากโปรแกรมวิเคราะห์ประสิทธิภาพอาจเป็นดังนี้:

  • สรุปทางสถิติของเหตุการณ์ที่สังเกตได้ ( รายละเอียด )
ข้อมูลสรุปโปรไฟล์มักแสดงควบคู่กับคำอธิบายประกอบในส่วนของโค้ดต้นฉบับที่เหตุการณ์เกิดขึ้น ดังนั้นขนาดของข้อมูลการวัดจึงแปรผันตามขนาดของโค้ดโปรแกรม
/* ------------ แหล่งที่มา------------------------- จำนวน */ 0001 ถ้า X = "A" 0055 0002 จากนั้นทำ 0003 เพิ่ม 1 ให้กับ XCOUNT 0032 0004 อื่นๆ 0005 ถ้า X = "B" 0055 
  • ลำดับเหตุการณ์ที่บันทึกไว้ ( ร่องรอย )
สำหรับโปรแกรมแบบลำดับ การสรุปโปรไฟล์โดยทั่วไปก็เพียงพอแล้ว แต่ปัญหาด้านประสิทธิภาพในโปรแกรมแบบขนาน (เช่น การรอข้อความหรือปัญหาการซิงโครไนซ์) มักขึ้นอยู่กับความสัมพันธ์เชิงเวลาของเหตุการณ์ ดังนั้นจึงจำเป็นต้องมีการติดตามการทำงานอย่างครบถ้วนเพื่อให้เข้าใจว่าเกิดอะไรขึ้น
ขนาดของร่องรอยการทำงาน (แบบเต็ม) จะแปรผันตามความยาวของเส้นทางคำสั่ง ในโปรแกรม ทำให้การใช้งานจริงค่อนข้างไม่สะดวก ดังนั้น ร่องรอยการทำงานอาจเริ่มต้นที่จุดหนึ่งในโปรแกรมและสิ้นสุดที่อีกจุดหนึ่งเพื่อจำกัดผลลัพธ์
  • การโต้ตอบอย่างต่อเนื่องกับไฮเปอร์ไวเซอร์ (เช่น การตรวจสอบอย่างต่อเนื่องหรือเป็นระยะผ่านการแสดงผลบนหน้าจอ)
ฟังก์ชันนี้เปิดโอกาสให้เปิดหรือปิดการติดตามได้ทุกจุดที่ต้องการระหว่างการทำงาน นอกเหนือจากการดูเมตริกที่กำลังดำเนินอยู่เกี่ยวกับโปรแกรม (ที่ยังคงทำงานอยู่) นอกจากนี้ยังเปิดโอกาสให้ระงับกระบวนการแบบอะซิงโครนัสในจุดสำคัญเพื่อตรวจสอบปฏิสัมพันธ์กับกระบวนการแบบขนานอื่นๆ ได้อย่างละเอียดมากขึ้น

โปรไฟล์เลอร์สามารถนำไปใช้กับเมธอดแต่ละตัวหรือในระดับโมดูลหรือโปรแกรม เพื่อระบุคอขวดด้านประสิทธิภาพโดยทำให้โค้ดที่ใช้เวลานานชัดเจน[ 1 ]โปรไฟล์เลอร์สามารถใช้เพื่อทำความเข้าใจโค้ดจากมุมมองด้านเวลา โดยมีวัตถุประสงค์เพื่อเพิ่มประสิทธิภาพให้สามารถจัดการกับเงื่อนไขรันไทม์ต่างๆ[ 2 ]หรือโหลดต่างๆ[ 3 ]ผลลัพธ์ของการทำโปรไฟล์เลอร์สามารถนำเข้าโดยคอมไพเลอร์ที่ให้การเพิ่มประสิทธิภาพตามโปรไฟล์เลอร์ [ 4 ] ผลลัพธ์ของการทำโปรไฟล์เลอร์สามารถใช้เพื่อเป็นแนวทางในการออกแบบและการเพิ่มประสิทธิภาพของอัลกอริทึมแต่ละตัวอัลกอริทึมการจับคู่ไวด์การ์ดของ Kraussเป็นตัวอย่างหนึ่ง[ 5 ] โปรไฟล์เลอร์ถูกสร้างขึ้นในระบบ การจัดการประสิทธิภาพแอปพลิเคชันบางระบบที่รวบรวมข้อมูลโปรไฟล์เลอร์เพื่อให้ข้อมูลเชิงลึกเกี่ยวกับ ภาระงาน ธุรกรรมในแอปพลิ เคชัน แบบกระจาย[ 6 ]

ประวัติศาสตร์

เครื่องมือวิเคราะห์ประสิทธิภาพมีอยู่แล้วใน แพลตฟอร์ม IBM/360และIBM/370ตั้งแต่ช่วงต้นทศวรรษ 1970 โดยปกติจะใช้การขัดจังหวะด้วยตัวจับเวลา ซึ่งจะบันทึกคำสถานะโปรแกรม (PSW) ในช่วงเวลาที่กำหนดไว้เพื่อตรวจจับ "จุดร้อน" ในการทำงานของโค้ด นี่เป็นตัวอย่างแรกๆ ของการสุ่มตัวอย่าง (ดูด้านล่าง) ในช่วงต้นทศวรรษ 1974 โปรแกรมจำลองชุดคำสั่งอนุญาตให้มีการติดตามการทำงานอย่างเต็มรูปแบบและคุณสมบัติการตรวจสอบประสิทธิภาพอื่นๆ

การวิเคราะห์โปรแกรมโดยใช้โปรไฟล์เลอร์บน Unix มีมาตั้งแต่ปี 1973 [ 7 ]เมื่อระบบ Unix มีเครื่องมือพื้นฐานprofซึ่งแสดงรายการฟังก์ชันแต่ละฟังก์ชันและเวลาการทำงานของโปรแกรมที่ใช้ไป ในปี 1982 ได้ขยายแนวคิดนี้ไปสู่ การวิเคราะห์กราฟการเรียกใช้gprofที่สมบูรณ์[ 8 ]

ในปี พ.ศ. 2537 Amitabh Srivastava และAlan EustaceจากDigital Equipment Corporationได้ตีพิมพ์เอกสารที่อธิบาย ATOM [ 9 ] (Analysis Tools with OM) แพลตฟอร์ม ATOM แปลงโปรแกรมให้เป็นโปรไฟล์เลอร์ของตัวเอง: ในระหว่างการคอมไพล์มันจะแทรกโค้ดลงในโปรแกรมที่จะวิเคราะห์ โค้ดที่แทรกเข้าไปนั้นจะส่งออกข้อมูลการวิเคราะห์ เทคนิคนี้ - การแก้ไขโปรแกรมเพื่อวิเคราะห์ตัวเอง - เรียกว่า " การใส่เครื่องมือ "

ในปี พ.ศ. 2547 ทั้งgprofเอกสารของ และ ATOM ปรากฏอยู่ในรายชื่อ เอกสาร PLDI ที่มีอิทธิพลมากที่สุด 50 อันดับแรก ในช่วง 20 ปีที่สิ้นสุดในปี พ.ศ. 2542 [ 10 ]

ประเภทของโปรไฟล์เลอร์ตามผลลัพธ์

โปรไฟล์แบบแบน

โปรไฟล์แบบแบนจะคำนวณเวลาการโทรเฉลี่ยจากการโทร และจะไม่แยกเวลาการโทรตามผู้รับสายหรือบริบท[ 11 ]

โปรแกรมวิเคราะห์กราฟการโทร

เครื่องมือวิเคราะห์กราฟการเรียก[ 8 ]แสดงเวลาการเรียกและความถี่ของฟังก์ชัน รวมถึงห่วงโซ่การเรียกที่เกี่ยวข้องโดยอิงตามผู้รับการเรียก ในบางเครื่องมือ บริบททั้งหมดจะไม่ถูกเก็บรักษาไว้

โปรไฟล์ที่ไวต่ออินพุต

โปรไฟล์เลอร์ที่ไวต่ออินพุต[ 12 ] [ 13 ] [ 14 ]เพิ่มมิติเพิ่มเติมให้กับโปรไฟล์เลอร์แบบแบนหรือกราฟการเรียกโดยเชื่อมโยงการวัดประสิทธิภาพกับคุณลักษณะของภาระงานอินพุต เช่น ขนาดอินพุตหรือค่าอินพุต โปรไฟล์เลอร์เหล่านี้สร้างแผนภูมิที่แสดงลักษณะว่าประสิทธิภาพของแอปพลิเคชันปรับขนาดอย่างไรตามฟังก์ชันของอินพุต

ระดับความละเอียดของข้อมูลในประเภทโปรไฟล์เลอร์

โปรไฟล์เลอร์ ซึ่งเป็นโปรแกรมเช่นกัน จะวิเคราะห์โปรแกรมเป้าหมายโดยการรวบรวมข้อมูลเกี่ยวกับการทำงานของโปรแกรมเป้าหมาย โปรไฟล์เลอร์จะถูกจำแนกตามความละเอียดของข้อมูล ซึ่งขึ้นอยู่กับวิธีการที่โปรไฟล์เลอร์รวบรวมข้อมูล โดยจะแบ่งเป็น โปรไฟล์เลอร์ แบบอิงเหตุการณ์หรือแบบสถิติโปรไฟล์เลอร์จะขัดจังหวะการทำงานของโปรแกรมเพื่อรวบรวมข้อมูล การขัดจังหวะเหล่านี้อาจจำกัดความละเอียดในการวัดเวลา ซึ่งหมายความว่าผลลัพธ์ด้านเวลาควรได้รับการพิจารณาอย่างรอบคอบ โปรไฟล์เลอร์ แบบบล็อกพื้นฐานจะรายงานจำนวนรอบสัญญาณนาฬิกา ของเครื่อง ที่ใช้ในการประมวลผลโค้ดแต่ละบรรทัด หรือเวลาโดยอิงจากการรวมรอบสัญญาณนาฬิกาเหล่านั้นเข้าด้วยกัน เวลาที่รายงานต่อบล็อกพื้นฐานอาจไม่สะท้อนถึงความแตกต่างระหว่างแคชฮิตและแคชมิส[ 15 ] [ 16 ]

โปรไฟล์แบบอิงตามเหตุการณ์

เครื่องมือวิเคราะห์ประสิทธิภาพตามเหตุการณ์มีให้ใช้งานสำหรับภาษาโปรแกรมต่อไปนี้:

  • Java : API JVMTI (JVM Tools Interface) ซึ่งเดิมคือ JVMPI (JVM Profiling Interface) มีกลไกให้โปรไฟล์เลอร์ใช้ในการดักจับเหตุการณ์ต่างๆ เช่น การเรียกใช้ฟังก์ชัน การโหลดคลาส การยกเลิกการโหลด การเข้าและออกจากเธรด
  • .NET : สามารถแนบเอเจนต์สำหรับการวิเคราะห์ประสิทธิภาพ (Profiling Agent) เป็นเซิร์ฟเวอร์COM เข้ากับ CLRโดยใช้ Profiling APIเช่นเดียวกับ Java รันไทม์จะให้ฟังก์ชันเรียกกลับ (callback) ต่างๆ แก่เอเจนต์ เพื่อดักจับเหตุการณ์ต่างๆ เช่น การคอมไพล์แบบJIT / เข้า / ออกจากเมธอด การสร้างอ็อบเจ็กต์ เป็นต้น จุดเด่นคือ เอเจนต์สำหรับการวิเคราะห์ประสิทธิภาพสามารถเขียนโค้ดไบต์ของแอปพลิเคชันเป้าหมายใหม่ได้ในรูปแบบต่างๆ
  • Python : การวิเคราะห์ประสิทธิภาพใน Python ประกอบด้วยโมดูล profile, hotshot (ซึ่งใช้กราฟการเรียก) และการใช้ฟังก์ชัน 'sys.setprofile' เพื่อดักจับเหตุการณ์ต่างๆ เช่น c_{call,return,exception}, python_{call,return,exception}
  • Ruby : Ruby ยังใช้อินเทอร์เฟซที่คล้ายกับ Python สำหรับการวิเคราะห์ประสิทธิภาพ โดยมี Flat-profiler ในไฟล์ profile.rb, โมดูล และ ruby-prof ซึ่งเป็นส่วนขยายที่เขียนด้วยภาษา C

เครื่องมือวิเคราะห์ข้อมูลเชิงสถิติ

โปรไฟล์เลอร์เหล่านี้ทำงานโดยการสุ่มตัวอย่าง โปรไฟล์เลอร์แบบสุ่มตัวอย่างจะตรวจสอบ สแต็กการเรียกของโปรแกรมเป้าหมายในช่วงเวลาปกติโดยใช้การขัดจังหวะของระบบปฏิบัติการ โปรไฟล์แบบสุ่มตัวอย่างมักมีความแม่นยำและเฉพาะเจาะจงน้อยกว่าในเชิงตัวเลข โดยให้เพียงการประมาณทางสถิติเท่านั้น แต่ช่วยให้โปรแกรมเป้าหมายทำงานได้เกือบเต็มความเร็ว “ปริมาณข้อผิดพลาดที่แท้จริงมักจะมากกว่าหนึ่งช่วงเวลาการสุ่มตัวอย่าง อันที่จริง หากค่าหนึ่งเป็น n เท่าของช่วงเวลาการสุ่มตัวอย่าง ข้อผิดพลาดที่คาดหวังในค่านั้นคือรากที่สองของ n ช่วงเวลาการสุ่มตัวอย่าง” [ 17 ]

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

น่าเสียดายที่การรันโค้ดเคอร์เนลเพื่อจัดการกับการขัดจังหวะทำให้สูญเสียรอบการทำงานของ CPU ไปเล็กน้อยจากโปรแกรมเป้าหมาย เบี่ยงเบนการใช้งานแคช และไม่สามารถแยกแยะงานต่างๆ ที่เกิดขึ้นในโค้ดเคอร์เนลที่ไม่สามารถขัดจังหวะได้ (กิจกรรมในช่วงไมโครวินาที) จากโค้ดของผู้ใช้ได้ ฮาร์ดแวร์เฉพาะทางสามารถทำได้ดีกว่า: ARM Cortex-M3 และอินเทอร์เฟซ JTAG ของโปรเซสเซอร์ MIPS รุ่นใหม่บางรุ่นมีรีจิสเตอร์ PCSAMPLE ซึ่งสุ่มตัวอย่างตัวนับโปรแกรมในลักษณะที่ไม่สามารถตรวจจับได้จริง ทำให้สามารถรวบรวมโปรไฟล์แบบราบเรียบได้โดยไม่รบกวนการทำงาน

โปรไฟล์เลอร์ทางสถิติ ที่ใช้กันทั่วไป[ 19 ]สำหรับโค้ด Java/managed ได้แก่AQtimeของSmartBear Software [ 20 ]และCLR ProfilerของMicrosoft [ 21 ] โปรไฟล์เลอร์เหล่านี้ยังรองรับการทำโปรไฟล์โค้ดเนทีฟด้วย เช่นเดียวกับSharkของApple Inc. (OSX) [ 22 ] OProfile (Linux) [ 23 ] Intel VTuneและ Parallel Amplifier (ส่วนหนึ่งของIntel Parallel Studio ) และOracle Performance Analyzer [ 24 ] และ อื่น

เครื่องมือวัด

เทคนิคนี้จะเพิ่มคำสั่งลงในโปรแกรมเป้าหมายเพื่อรวบรวมข้อมูลที่จำเป็นได้อย่างมีประสิทธิภาพ โปรดทราบว่าการใส่เครื่องมือลงในโปรแกรมอาจทำให้ประสิทธิภาพการทำงานเปลี่ยนแปลงไป และในบางกรณีอาจนำไปสู่ผลลัพธ์ที่ไม่ถูกต้องและ/หรือข้อผิดพลาดร้ายแรงได้ ผลกระทบจะขึ้นอยู่กับข้อมูลที่กำลังรวบรวม ระดับของรายละเอียดเวลาที่รายงาน และว่ามีการใช้การวิเคราะห์บล็อกพื้นฐานร่วมกับการใส่เครื่องมือหรือไม่[ 25 ] ตัวอย่างเช่น การเพิ่มโค้ดเพื่อนับการเรียกใช้ขั้นตอน/รูทีนทุกครั้งน่าจะมีผลกระทบน้อยกว่าการนับจำนวนครั้งที่แต่ละคำสั่งถูกปฏิบัติตาม คอมพิวเตอร์บางเครื่องมีฮาร์ดแวร์พิเศษเพื่อรวบรวมข้อมูล ในกรณีนี้ผลกระทบต่อโปรแกรมจะน้อยมาก

อุปกรณ์วัดเป็นกุญแจสำคัญในการกำหนดระดับการควบคุมและความละเอียดของเวลาที่มีให้แก่เครื่องมือวัดโปรไฟล์

  • การดำเนินการ ด้วยตนเอง : ดำเนินการโดยโปรแกรมเมอร์ เช่น การเพิ่มคำสั่งเพื่อคำนวณเวลาการทำงานอย่างชัดเจน การนับเหตุการณ์ หรือการเรียกใช้API สำหรับการวัดผล เช่น มาตรฐาน การวัดการตอบสนองของแอปพลิเคชัน (Application Response Measurement standard)
  • การตรวจสอบระดับซอร์สโค้ดอัตโนมัติ : การเพิ่มเครื่องมือตรวจสอบลงในซอร์สโค้ดโดยเครื่องมืออัตโนมัติตามนโยบายการตรวจสอบ
  • ภาษาระดับกลาง : การเพิ่มเครื่องมือเข้าไปในโค้ดแอสเซมบลีหรือไบต์โค้ด ที่ถอดรหัสแล้ว เพื่อรองรับภาษาต้นฉบับระดับสูงหลายภาษา และหลีกเลี่ยงปัญหาการเขียนทับค่าออฟเซ็ตไบนารี (ที่ไม่ใช่เชิงสัญลักษณ์)
  • คอมไพเลอร์ให้ความช่วยเหลือ
  • การแปลงไบนารี : เครื่องมือนี้จะเพิ่มการตรวจสอบการทำงานลงในไฟล์ปฏิบัติการ ที่คอมไพ ล์ แล้ว
  • การตรวจสอบการทำงานขณะรันไทม์ : โค้ดจะถูกตรวจสอบก่อนการทำงานโดยตรง การทำงานของโปรแกรมจะถูกควบคุมและกำกับดูแลอย่างสมบูรณ์โดยเครื่องมือนี้
  • การแทรกโค้ดขณะรันไทม์ : เบากว่าการตรวจสอบโค้ดขณะรันไทม์ โค้ดจะถูกแก้ไขขณะรันไทม์เพื่อให้มีการกระโดดไปยังฟังก์ชันช่วยเหลือ

เครื่องมือล่าม

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

ไฮเปอร์ไวเซอร์/ซิมูเลเตอร์

  • ไฮเปอร์ไวเซอร์ : ข้อมูลจะถูกรวบรวมโดยการเรียกใช้โปรแกรม (โดยปกติ) ที่ไม่ได้แก้ไขใดๆ ภายใต้ไฮเปอร์ไวเซอร์ตัวอย่างเช่นSIMMON
  • โปรแกรมจำลองและไฮเปอร์ไวเซอร์ : ข้อมูลที่รวบรวมแบบโต้ตอบและเลือกสรรโดยการเรียกใช้โปรแกรมที่ไม่ได้รับการแก้ไขภายใต้โปรแกรมจำลองชุดคำสั่ง

ดูเพิ่มเติม

  • บทความ " ความเร็วที่จำเป็น — การกำจัดปัญหาคอขวดด้านประสิทธิภาพ " เกี่ยวกับการวิเคราะห์เวลาการทำงานของแอปพลิเคชัน Java โดยใช้IBM Rational Application Developer
  • การวิเคราะห์ประสิทธิภาพการทำงานของโค้ดที่สร้างและตีความโดยใช้ VTune Performance Analyzer
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Profiling_(computer_programming)&oldid=1358426148 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ การวิเคราะห์ประสิทธิภาพ (การเขียนโปรแกรมคอมพิวเตอร์)

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

กิจกรรมของโครงการรวมกลุ่ม

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

การใช้เครื่องมือวิเคราะห์ประสิทธิภาพ

เครื่องมือวิเคราะห์โปรแกรมมีความสำคัญอย่างยิ่งต่อการทำความเข้าใจพฤติกรรมของโปรแกรม สถาปนิกคอมพิวเตอร์ต้องการเครื่องมือเหล่านี้เพื่อประเมินว่าโปรแกรมจะทำงานได้ดีเพียงใดบน สถาปัตยกรรม ใหม่...

ประวัติศาสตร์

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