ขอยกตัวอย่างตามประสบการณ์ ห้องสมุดส่วนใหญ่ที่ฉันใช้ในแต่ละวันใช้ OOP ในทางใดทางหนึ่ง OOP สามารถซ่อนความซับซ้อนที่จำเป็นสำหรับหลาย ๆ โดเมนไม่ใช่กลไกที่ช่วยในเรื่องประสิทธิภาพ สิ่งที่สามารถเกิดขึ้นได้คือไลบรารีสามารถใช้การปรับให้เหมาะสมเฉพาะตามลำดับชั้นของวัตถุ แต่ส่วนใหญ่เกี่ยวกับการซ่อนความซับซ้อนจากผู้ใช้ เงยหน้าขึ้นมองการออกแบบพวกเขาเป็นกลไกที่มักใช้ในการซ่อนความซับซ้อนนี้
ใช้ PETSc เป็นตัวอย่าง PETSc ใช้แบบจำลองการตรวจสอบ / ผู้ดำเนินการของ OOP ที่อัลกอริทึมใด ๆ ของมันดูที่รูทีนที่มีอยู่ในวัตถุที่กำหนดและเลือกที่จะดำเนินการเพื่อให้บรรลุรูทีน สิ่งนี้ช่วยให้ผู้ใช้สามารถแยกข้อกังวลได้ตัวอย่างเช่นการกระทำของเมทริกซ์อาจรวมถึงขั้นตอนที่ถูกบล็อกหรือปรับให้เหมาะสมและใช้งานได้อย่างมีประสิทธิภาพโดยนักแก้ปัญหาซ้ำหลายคน ด้วยการให้ความสามารถแก่ผู้ใช้ในการระบุชนิดข้อมูลและการประเมินผลของพวกเขาพวกเขาจะได้รับรูทีนที่สำคัญสองสามรายการและยังมีฟังก์ชั่นการทำงานของห้องสมุดทั้งหมด
อีกตัวอย่างหนึ่งที่ฉันจะให้คือ FEniCS และดีลที่สอง ห้องสมุดทั้งสองนี้ใช้ OOP เพื่อพูดคุยกับระเบียบวิธีไฟไนต์อิลิเมนต์จำนวนมาก ในทุกสิ่งจากประเภทองค์ประกอบลำดับองค์ประกอบการแสดงพื้นที่สี่เหลี่ยมจัตุรัสและอื่น ๆ สามารถเปลี่ยนได้ ในขณะที่ทั้งสองไลบรารีเหล่านี้ "ช้าลง" กว่ารหัส FEM ที่มีโครงสร้างวัตถุประสงค์พิเศษบางอย่างพวกเขาสามารถแก้ไขปัญหาได้หลากหลายด้วยความซับซ้อนของ FEM ที่ผู้ใช้ไม่รู้จัก
ตัวอย่างสุดท้ายของฉันคือองค์ประกอบ Elemental เป็นไลบรารีพีชคณิตเชิงเส้นใหม่ที่มีความยากลำบากในการจัดการการสื่อสาร MPI และตำแหน่งข้อมูลไปยังโครงสร้างภาษาที่ง่ายมาก ผลที่ได้คือถ้าคุณมีรหัสอนุกรม FLAME โดยการเปลี่ยนประเภทข้อมูลคุณยังสามารถมีรหัสขนานผ่านทางองค์ประกอบ ที่น่าสนใจยิ่งขึ้นคุณสามารถเล่นกับการกระจายข้อมูลโดยตั้งค่าการกระจายเท่ากับอีก
OOP ควรถูกมองว่าเป็นวิธีการจัดการความซับซ้อนไม่ใช่กระบวนทัศน์สำหรับการแข่งขันกับการชุมนุมด้วยมือ นอกจากนี้การทำอย่างไม่ดีจะส่งผลให้เกิดค่าใช้จ่ายจำนวนมากดังนั้นเราต้องรักษาเวลาและปรับปรุงกลไกที่ใช้ด้วย