แนวทาง“ CPS” ได้สร้างความเสียหายอย่างมากต่อประสิทธิภาพใน SML / NJ เหตุผลที่ต้องการ


11

ในความคิดเห็นต่อการเรียนรู้ F #: หนังสือที่ใช้ภาษาการเขียนโปรแกรมอื่นใดที่สามารถแปลเป็น F # เพื่อเรียนรู้แนวคิดการทำงานได้ Makariusระบุ:

โปรดทราบว่าวิธีการ "CPS" ได้สร้างความเสียหายอย่างมากต่อประสิทธิภาพการทำงานใน SML / NJ รูปแบบการประเมินผลทางกายภาพของมันละเมิดสมมติฐานมากเกินไปที่สร้างขึ้นในฮาร์ดแวร์ หากคุณใช้แอปพลิเคชันสัญลักษณ์ขนาดใหญ่ของ SML เช่น Isabelle / HOL SML / NJ พร้อม CPS จะแสดงผลประมาณ ช้ากว่าโพลี / ML 100 เท่าด้วยสแต็กธรรมดา

มีคนอธิบายเหตุผลนี้ได้ไหม (โดยเฉพาะอย่างยิ่งกับตัวอย่าง) มีความต้านทานไม่ตรงกันที่นี่หรือไม่?


1
ความเข้าใจของฉันคือว่าฮาร์ดแวร์ถือว่าระเบียบวินัยสแต็คดังนั้นวิธีการ CPS จึงเป็นที่นิยมชมชอบสำหรับการไม่ปฏิบัติตามสมมติฐานนี้ แต่นั่นเป็นเพียงความคิดเห็นที่ไม่รู้ของฉัน
Andrej Bauer

คำตอบ:


9

เมื่อการประมาณแรกมีความแตกต่างใน "locality" ของการเข้าถึงหน่วยความจำเมื่อ programm เพิ่งทำงานไปข้างหน้าบน heap ในสไตล์ CPS แทนที่จะเป็นแบบดั้งเดิมที่เพิ่มขึ้นและหดตัวของ stack โปรดทราบว่า CPS จะต้องใช้ GC เพื่อกู้คืนข้อมูลในเครื่องของคุณที่วางอยู่บนกองเสมอ การสังเกตเหล่านี้เพียงอย่างเดียวน่าจะเพียงพอเมื่อ 10 หรือ 20 ปีก่อนเมื่อฮาร์ดแวร์ง่ายกว่านี้มาก

ฉันเป็นทั้งกูรูด้านฮาร์ดแวร์หรือคอมไพเลอร์ดังนั้นเมื่อประมาณครั้งที่สองนี่เป็นเหตุผลที่ชัดเจนสำหรับการประมาณ ปัจจัย 100 ที่เห็นใน Isabelle / HOL:

  • การสูญเสียประสิทธิภาพขั้นพื้นฐานตาม "การประมาณการครั้งแรก" ด้านบน

  • การจัดการฮีป SML / NJ และ GC มีปัญหาร้ายแรงในการขยายขนาดเกินหลายสิบ MB ตอนนี้อิซาเบลใช้ 100-1000 MB เป็นประจำบางครั้งหลาย GB

  • การรวบรวม SML / NJ ช้ามาก - นี่อาจไม่เกี่ยวข้องทั้งหมด (โปรดทราบว่า Isabelle / HOL สำรองการคอมไพล์รันไทม์และรหัสที่ทำงาน)

  • SML / NJ ไม่มีมัลติเธรดแบบดั้งเดิม - ไม่เกี่ยวข้องอย่างสมบูรณ์เนื่องจาก CPS ถูกโฆษณาเป็น "ม้วนเธรดของคุณเองในพื้นที่ผู้ใช้โดยไม่มีสแต็คแยกต่างหาก"

ความสัมพันธ์ของ heap และเธรดยังถูกกล่าวถึงในบทความโดย Morriset / Tolmach PPOPP 1993 "Procs and Locks: แพลตฟอร์มมัลติโพรเซสซิงแบบพกพาสำหรับมาตรฐาน ML ของ New Jersey" ( CiteSeerX ) หมายเหตุ: PDF ที่ CiteSeerX ย้อนกลับหน้าจาก 10- 10- 1 แทน 1-10

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