ก่อนอื่นเราจะทำลายสมมติฐานบางส่วนของคุณ:
- ข้อดีอย่างหนึ่งของไลบรารีส่วนหัวเท่านั้นสำหรับ C ++ คือไม่จำเป็นต้องรวบรวมแยกต่างหาก
การรวบรวมสิ่งต่าง ๆ หมายความว่าอาจไม่จำเป็นต้องคอมไพล์ทุกสิ่งใหม่หากมีการเปลี่ยนแปลงบางส่วนเท่านั้น
ดังนั้นเสียเปรียบแทนที่จะเป็นข้อได้เปรียบ
- ใน C และ C ++ แบบอินไลน์ทำให้รู้สึกได้เฉพาะเมื่อมีการกำหนดฟังก์ชันในไฟล์ส่วนหัว *
ใช่เอฟเฟกต์เดียวที่inline
เหลืออยู่คือข้อยกเว้นสำหรับกฎข้อจำกัดความเดียว
วิบัติแก่เจ้าหากคำจำกัดความเหล่านั้นแตกต่างไปในทางใดทางหนึ่ง
static
ดังนั้นถ้าฟังก์ชั่นภายในเพื่อรวบรวมหน่วยทำเครื่องหมาย สิ่งนี้ยังทำให้อินไลน์มีแนวโน้มมากขึ้นเนื่องจากฟังก์ชันจำเป็นต้องมีอยู่เพื่อให้อินไลน์ได้
ยังลองดูที่ลิงค์เวลาเพิ่มประสิทธิภาพตามที่สนับสนุนอย่างน้อย MSVC ++ gcc และเสียงดังกราว
- ตามเนื้อผ้ามีการใช้รูปแบบ C, .c / .h โดยที่ส่วนหัวแสดงส่วนติดต่อสาธารณะที่น้อยที่สุดของหน่วยการแปล ในทำนองเดียวกัน. cpp / hpp
เพียงการนำเสนออินเทอร์เฟซน้อยที่สุดนั้นเป็นหนึ่งในเป้าหมายที่แน่นอนเพื่อให้ได้ API และ ABI ที่เสถียรยิ่งขึ้นและเพื่อลดเวลาในการรวบรวม
โดยเฉพาะอย่างยิ่งคลาส C ++ นั้นไม่ได้มุ่งเน้นไปที่สิ่งนั้นเนื่องจากบิตส่วนตัวทั้งหมดรั่วไหลลงในส่วนหัวเช่นเดียวกับกลุ่มที่ได้รับการป้องกันไม่ว่าคุณต้องการได้มาจากมันหรือไม่
PIMPLรูปแบบการออกแบบใช้สำหรับลดรายละเอียดดังกล่าว
ส่วนที่แยกอินเทอร์เฟซและการใช้งานล้มเหลวอย่างสมบูรณ์ใน C ++ เป็นแม่แบบ
คณะกรรมการพยายามทำบางสิ่งกับเทมเพลตที่ส่งออกแต่มันถูกทิ้งร้างซับซ้อนเกินไปและใช้งานไม่ได้จริง ๆ
ตอนนี้พวกเขากำลังทำงานกับระบบโมดูลที่เหมาะสมแม้ว่ามันจะช้า ซึ่งลดเวลาในการคอมไพล์อย่างรุนแรงและควรเพิ่มความเสถียรของ API และ ABI ด้วยการลดพื้นผิว
ไลบรารีส่วนหัวเท่านั้นโดยทั่วไปมีประสิทธิภาพมากขึ้น - เวลาในการประมวลผลและฉลาดกว่าเลย์เอาต์ดั้งเดิมหรือไม่? ถ้าเป็นเช่นนี้เป็นเพราะการอินไลน์อย่างกว้างขวางหรือการเพิ่มประสิทธิภาพอื่น ๆ ?
ส่วนหัวเท่านั้นไลบรารีสามารถมีประสิทธิภาพมากขึ้นในขนาดรหัสและเวลาดำเนินการ แต่ที่ขึ้นอยู่กับว่าไลบรารีที่ใช้ร่วมกันใช้จำนวนเท่าใดวิธีการใดและการ inlining พิสูจน์ชนะเด็ดขาดในกรณีเฉพาะนั้นหรือไม่
และเหตุผลที่การ inline เป็นสิ่งสำคัญสำหรับการปรับให้เหมาะสมไม่ใช่เพราะการฝังตัวเองเป็นสิ่งที่เพิ่มขึ้นอย่างมาก แต่เนื่องจากโอกาสในการแพร่กระจายอย่างต่อเนื่องและการเพิ่มประสิทธิภาพที่เพิ่มขึ้นจะเปิดขึ้น