ฉันได้ทำไม่น้อยในการทำงานเกี่ยวกับเรื่องนี้และอธิบายบางส่วนของมันนี่ ฉันเปรียบเทียบ Boehm GC ใน C ++, การจัดสรรโดยใช้malloc
แต่ไม่ทำให้ว่าง, จัดสรรและเพิ่มการใช้free
และ GC แบบมาร์คที่สร้างขึ้นเองที่เขียนใน C ++ ทั้งหมดเทียบกับหุ้น OCaml ของ OCaml ทำงานเป็นตัวแก้รายการ n-queens GCam ของ OCaml นั้นเร็วกว่าในทุกกรณี โปรแกรม C ++ และ OCaml ถูกเขียนอย่างจงใจเพื่อทำการจัดสรรแบบเดียวกันในลำดับเดียวกัน
แน่นอนคุณสามารถเขียนโปรแกรมใหม่เพื่อแก้ปัญหาโดยใช้จำนวนเต็ม 64- บิตเท่านั้นและไม่มีการจัดสรร แม้ว่าเร็วกว่าที่จะกำจัดจุดของการฝึกซ้อม (ซึ่งก็คือการทำนายประสิทธิภาพของอัลกอริทึม GC ใหม่ที่ฉันกำลังทำงานโดยใช้ต้นแบบที่สร้างขึ้นใน C ++)
ฉันใช้เวลาหลายปีในอุตสาหกรรมในการแปลงรหัส C ++ จริงเป็นภาษาที่มีการจัดการ ในเกือบทุกกรณีฉันสังเกตเห็นการปรับปรุงประสิทธิภาพอย่างมากซึ่งอาจเป็นเพราะ GC การจัดการหน่วยความจำด้วยตนเอง ข้อ จำกัด ในทางปฏิบัติไม่ใช่สิ่งที่สามารถทำได้ใน microbenchmark แต่สิ่งที่สามารถทำได้ก่อนกำหนดเวลาและภาษาที่ใช้ GC ให้การปรับปรุงประสิทธิภาพการผลิตขนาดใหญ่ที่ฉันไม่เคยมองย้อนกลับไป ฉันยังคงใช้ C และ C ++ บนอุปกรณ์ฝังตัว (ไมโครคอนโทรลเลอร์) แต่แม้ตอนนี้จะเปลี่ยนไป