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

อ่าน 3 นาที

การเพิ่มประสิทธิภาพตามโปรไฟล์

ในการ เขียนโปรแกรมคอมพิวเตอร์ การเพิ่มประสิทธิภาพโดยใช้โปรไฟล์เป็นแนวทาง ( PGO บางครั้งออกเสียงว่า pogo [ 1 ] ) หรือที่รู้จักกันในชื่อ การป้อนกลับโดยใช้โปรไฟล์เป็นแนวทาง ( PDF ) [...

การเพิ่มประสิทธิภาพตามโปรไฟล์

ในการเขียนโปรแกรมคอมพิวเตอร์การเพิ่มประสิทธิภาพโดยใช้โปรไฟล์เป็นแนวทาง ( PGOบางครั้งออกเสียงว่าpogo [ 1 ] ) หรือที่รู้จักกันในชื่อการป้อนกลับโดยใช้โปรไฟล์เป็นแนวทาง ( PDF ) [ 2 ]หรือการเพิ่มประสิทธิภาพโดยใช้การป้อนกลับเป็นแนวทาง ( FDO ) [ 3 ]เป็น เทคนิค การเพิ่มประสิทธิภาพของคอมไพเลอร์โดยใช้การวิเคราะห์ก่อนหน้าของสิ่งประดิษฐ์หรือพฤติกรรมของซอฟต์แวร์ (" การทำโปรไฟล์ ") เพื่อปรับปรุงประสิทธิภาพการทำงานของโปรแกรม ที่คาดหวัง

วิธี

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

คอมไพเลอร์ระดับสูงตัวแรก ซึ่งเปิดตัวในชื่อ Fortran Automatic Coding System ในปี 1957 ได้แบ่งโค้ดออกเป็นบล็อกและคิดค้นตารางความถี่ในการดำเนินการแต่ละบล็อกผ่านการจำลองการทำงานของโค้ดใน ลักษณะ Monte Carloซึ่งผลลัพธ์ของการถ่ายโอนแบบมีเงื่อนไข (เช่น ผ่านIFคำสั่งประเภท -type) จะถูกกำหนดโดยตัวสร้างตัวเลขสุ่มที่มีการถ่วงน้ำหนักอย่างเหมาะสมตามFREQUENCYคำสั่งใด ๆ ที่โปรแกรมเมอร์ให้มา[ 4 ]

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

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

การรับเลี้ยงบุตรบุญธรรม

มีการสนับสนุนการสร้างFirefoxโดยใช้ PGO [ 8 ]แม้ว่า PGO จะมีประสิทธิภาพ แต่ก็ยังไม่ได้รับการนำไปใช้อย่างแพร่หลายในโครงการซอฟต์แวร์ เนื่องจากโมเดลการคอมไพล์แบบคู่ที่ยุ่งยาก[ 9 ]นอกจากนี้ยังสามารถดำเนินการ PGO โดยไม่ต้องใช้เครื่องมือวัด โดยการรวบรวมโปรไฟล์โดยใช้ตัวนับประสิทธิภาพฮาร์ดแวร์[ 9 ] วิธีการที่ใช้ การสุ่มตัวอย่างนี้มีค่าใช้จ่ายน้อยกว่ามากและไม่จำเป็นต้องมีการคอมไพล์พิเศษ

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

PGO ถูกนำมาใช้ในคอมไพเลอร์ Microsoft Visual C++ (MSVC) พร้อมกับการเปิดตัวVisual Studio 2005

PGO ได้รับการนำมาใช้ในGoogle Chromeเวอร์ชันMicrosoft Windows PGO ถูกเปิดใช้งานใน Chrome เวอร์ชัน 64 บิตตั้งแต่เวอร์ชัน 53 และเวอร์ชัน 54 สำหรับเวอร์ชัน32 บิต[ 11 ]

Google ได้เผยแพร่เอกสาร[ 12 ]ที่อธิบายถึงเครื่องมือที่ใช้ในการใช้โปรไฟล์การผลิตเพื่อชี้นำการสร้าง ซึ่งส่งผลให้ประสิทธิภาพดีขึ้นถึง 10%

การนำไปใช้

ตัวอย่างของคอมไพเลอร์ที่ใช้ PGO ได้แก่:

ดูเพิ่มเติม

ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Profile-guided_optimization&oldid=1342940381 "

สรุปเนื้อหา

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

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

ในการ เขียนโปรแกรมคอมพิวเตอร์ การเพิ่มประสิทธิภาพโดยใช้โปรไฟล์เป็นแนวทาง ( PGO บางครั้งออกเสียงว่า pogo [ 1 ] ) หรือที่รู้จักกันในชื่อ การป้อนกลับโดยใช้โปรไฟล์เป็นแนวทาง ( PDF ) [...

วิธี

เทคนิคการเพิ่มประสิทธิภาพโดยอาศัย การวิเคราะห์โปรแกรมแบบคงที่ (static program analysis) จาก ซอร์สโค้ด จะพิจารณาการปรับปรุงประสิทธิภาพของโค้ดโดยไม่ต้องเรียกใช้โปรแกรมจริง ไม่มี การวิเคราะห์โปรแกรมแบบไดนามิก (dynamic program analysis ) ตัวอย่างเช่น...

การรับเลี้ยงบุตรบุญธรรม

มีการสนับสนุนการสร้าง Firefox โดยใช้ PGO [ 8 ] แม้ว่า PGO จะมีประสิทธิภาพ แต่ก็ยังไม่ได้รับการนำไปใช้อย่างแพร่หลายในโครงการซอฟต์แวร์ เนื่องจากโมเดลการคอมไพล์แบบคู่ที่ยุ่งยาก [ 9 ] นอกจากนี้ยังสามารถดำเนินการ PGO โดยไม่ต้องใช้เครื่องมือวัด...

ดูเพิ่มเติม

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