คอมไพเลอร์สตาลินเพิ่มประสิทธิภาพอย่างไร้ความปราณี แต่อย่างไร


14

แถลงการณ์การวิจัยของ JM Siskind :

สตาลินเป็นคอมไพเลอร์ปรับให้เหมาะสมสำหรับโครงการที่ดำเนินการวิเคราะห์แบบคงที่ทั้งโปรแกรมและใช้ผลลัพธ์ของการวิเคราะห์เพื่อสร้างรหัสที่มีประสิทธิภาพมาก สตาลินใช้เทคนิคการวิเคราะห์แบบสถิตจำนวนมาก มันดำเนินการในรูปแบบใหม่ของการวิเคราะห์การไหลหลายเท่าที่ใช้การวิเคราะห์กระแสแบบวนซ้ำเพื่อทำการแยกการไหล: การโคลนสำเนาเฉพาะของขั้นตอนและการมอบหมายต่อไซต์ที่โทรไปยังโคลนดังกล่าว มันใช้ผลลัพธ์ของการวิเคราะห์การไหลเพื่อทำการวิเคราะห์อายุการใช้งานการวิเคราะห์การหลบหนีการวิเคราะห์ชี้ไปที่และการวิเคราะห์นามแฝง การวิเคราะห์เหล่านี้สนับสนุนรูปแบบใหม่ของการแปลงแบบปิดน้ำหนักเบาซึ่งกำจัดช่องปิดส่วนใหญ่โดยใช้เทคนิคเช่นโลกาภิวัตน์ที่แปรปรวนและการโลคัลไลซ์การบีบอัดสแตติกเชนและมักจะกำจัดการปิดส่วนใหญ่ออกจากโปรแกรม นอกจากนี้ยังใช้การวิเคราะห์ด้านบนเพื่อรองรับการจัดการพื้นที่เก็บข้อมูลตามทิศทางการไหลโดยที่การรวบรวมขยะแบบรันไทม์จะถูกแทนที่ด้วยการจัดสรรแบบคงที่และการจัดสรรคืนบนพื้นฐานต่อค่านามธรรมและต่อจุดโปรแกรม นอกจากนี้ยังทำการแปลง CPS ที่มีน้ำหนักเบาแบบไหลลื่นโดยใช้ส่วนขยายของเทคนิคที่บุกเบิกโดย Screamer เพื่อสนับสนุนการทำงานต่อเนื่องที่มีประสิทธิภาพอย่างยิ่ง ในที่สุดก็รองรับการเลือกอินไลน์การกำกับการไหลและการเป็นตัวแทนระดับต่ำเพื่อเลือกการนำไปปฏิบัติ (หรือการไม่ใช้) ของแท็กการตรวจสอบแท็กและการจัดส่งแท็กบนพื้นฐานค่าต่อนามธรรมและต่อจุดโปรแกรม สิ่งนี้จะกำจัดแท็กเวลาทำงานส่วนใหญ่การตรวจสอบแท็กการติดแท็กการลอกแท็กการแจกจ่ายแท็กการชกมวยและการเลิกทำกล่องจากโปรแกรม โดยที่การรวบรวมขยะรันไทม์ถูกแทนที่ด้วยการจัดสรรแบบสแตติกและการจัดสรรคืนบนพื้นฐานต่อค่านามธรรมและต่อโปรแกรมจุด นอกจากนี้ยังทำการแปลง CPS ที่มีน้ำหนักเบาแบบไหลลื่นโดยใช้ส่วนขยายของเทคนิคที่บุกเบิกโดย Screamer เพื่อสนับสนุนการทำงานต่อเนื่องที่มีประสิทธิภาพอย่างยิ่ง ในที่สุดก็รองรับการเลือกอินไลน์การกำกับการไหลและการเป็นตัวแทนระดับต่ำเพื่อเลือกการใช้งาน (หรือการไม่ใช้) ของแท็กการตรวจสอบแท็กและการจัดส่งแท็กบนพื้นฐานค่าต่อนามธรรมและต่อจุดโปรแกรม สิ่งนี้จะกำจัดแท็กเวลาทำงานส่วนใหญ่การตรวจสอบแท็กการติดแท็กการลอกแท็กการแจกจ่ายแท็กการชกมวยและการเลิกทำกล่องจากโปรแกรม โดยที่การรวบรวมขยะรันไทม์ถูกแทนที่ด้วยการจัดสรรแบบสแตติกและการจัดสรรคืนบนพื้นฐานต่อค่านามธรรมและต่อโปรแกรมจุด นอกจากนี้ยังทำการแปลง CPS ที่มีน้ำหนักเบาแบบไหลลื่นโดยใช้ส่วนขยายของเทคนิคที่บุกเบิกโดย Screamer เพื่อสนับสนุนการทำงานต่อเนื่องที่มีประสิทธิภาพอย่างยิ่ง ในที่สุดก็รองรับการเลือกอินไลน์การกำกับการไหลและการเป็นตัวแทนระดับต่ำเพื่อเลือกการใช้งาน (หรือการไม่ใช้) ของแท็กการตรวจสอบแท็กและการจัดส่งแท็กบนพื้นฐานค่าต่อนามธรรมและต่อจุดโปรแกรม สิ่งนี้จะกำจัดแท็กเวลาทำงานส่วนใหญ่การตรวจสอบแท็กการติดแท็กการลอกแท็กการแจกจ่ายแท็กการชกมวยและการเลิกทำกล่องจากโปรแกรม ใช้ส่วนขยายของเทคนิคที่เป็นหัวหอกใน Screamer เพื่อสนับสนุนการทำงานต่อเนื่องที่มีประสิทธิภาพอย่างยิ่ง ในที่สุดก็รองรับการเลือกอินไลน์การกำกับการไหลและการเป็นตัวแทนระดับต่ำเพื่อเลือกการใช้งาน (หรือการไม่ใช้) ของแท็กการตรวจสอบแท็กและการจัดส่งแท็กบนพื้นฐานค่าต่อนามธรรมและต่อจุดโปรแกรม สิ่งนี้จะกำจัดแท็กเวลาทำงานส่วนใหญ่การตรวจสอบแท็กการติดแท็กการลอกแท็กการแจกจ่ายแท็กการชกมวยและการเลิกทำกล่องจากโปรแกรม ใช้ส่วนขยายของเทคนิคที่เป็นหัวหอกใน Screamer เพื่อสนับสนุนการทำงานต่อเนื่องที่มีประสิทธิภาพอย่างยิ่ง ในที่สุดก็รองรับการเลือกอินไลน์การกำกับการไหลและการเป็นตัวแทนระดับต่ำเพื่อเลือกการใช้งาน (หรือการไม่ใช้) ของแท็กการตรวจสอบแท็กและการจัดส่งแท็กบนพื้นฐานค่าต่อนามธรรมและต่อจุดโปรแกรม สิ่งนี้จะกำจัดแท็กเวลาทำงานส่วนใหญ่การตรวจสอบแท็กการติดแท็กการลอกแท็กการแจกจ่ายแท็กการชกมวยและการเลิกทำกล่องจากโปรแกรมการวิเคราะห์และปรับให้เหมาะสมเหล่านี้ทำให้สตาลินสามารถสร้างโค้ดที่มีประสิทธิภาพสูงสุดซึ่งมีประสิทธิภาพสูงกว่าคอมไพเลอร์ Scheme อื่น ๆ ทั้งหมดตามปัจจัยที่มีค่าระหว่างสองถึงหนึ่งร้อยโดยเฉพาะอย่างยิ่งสำหรับรหัสที่เน้นตัวเลข สตาลินมักจะสร้างรหัสที่มีประสิทธิภาพสูงกว่าการเขียนด้วยลายมือ c และรหัส Fortran

ผมสามารถที่จะพบต่อไปนี้กระดาษที่น่าสนใจมากเกี่ยวกับการปิด / สายงานการดำเนินงาน: การไหลกำกับน้ำหนักเบาปิดการแปลง ฉันได้ส่งอีเมลถึงผู้เขียนเพื่อถามเกี่ยวกับเอกสารในหัวข้ออื่น ๆ ซึ่งกล่าวถึงว่าจะเขียนในกระดาษปิดการแปลง:

Siskind, JM 2000a การแปลง CPS ที่มีน้ำหนักเบาตามทิศทางการไหล ในการเตรียมการ

Siskind, JM 2000b ความแปรปรวนแบบไหลตรง ในการเตรียมการ

Siskind, JM 2000c การเลือกการนำเสนอแบบไหลลื่น ในการเตรียมการ

Siskind, JM 2000d การจัดการพื้นที่เก็บข้อมูลแบบไหลลื่น ในการเตรียมการ

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

คำตอบ:


11

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

คอมไพเลอร์ MLton สำหรับ ML มาตรฐานทำสิ่งเดียวกัน ( http://mlton.org/ ) มีอยู่คนหนึ่งนำเสนอ (อย่างน้อย) เกี่ยวกับมันhttp://mlton.org/pages/References/attachments/060916-mlton.pdf

งานก่อนหน้านี้ทำโดย Craig Chambers และกลุ่มของเขาที่ University of Washington (ตัวอย่างเช่น: http://www.cs.washington.edu/research/projects/cecil/www/pubs/jdean-thesis.html ) สิ่งนี้ทำในบริบทของตนเองและในภายหลัง Cecil / Vortex

อาจมีงานมากขึ้นในชุมชน Scheme / Lisp คุณอาจต้องการพิจารณา googling "การเพิ่มประสิทธิภาพโปรแกรมทั้งหมด"

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