อ่าน 2 นาที
การออกแบบที่เน้นข้อมูล
ในด้านการคำนวณการออกแบบที่เน้นข้อมูลเป็น แนวทาง การเพิ่มประสิทธิภาพโปรแกรมที่ได้รับแรงบันดาลใจจากการใช้แคช CPU อย่างมีประสิทธิภาพ...
การออกแบบที่เน้นข้อมูล
ในด้านการคำนวณการออกแบบที่เน้นข้อมูลเป็น แนวทาง การเพิ่มประสิทธิภาพโปรแกรมที่ได้รับแรงบันดาลใจจากการใช้แคช CPU อย่างมีประสิทธิภาพ ซึ่งมักใช้ในการพัฒนาวิดีโอเกม[ 1 ]แนวทางนี้มุ่งเน้นไปที่การจัดวางข้อมูล การแยกและจัดเรียงฟิลด์ตามเวลาที่ต้องการ และการคิดถึงการแปลงข้อมูล ผู้สนับสนุน ได้แก่ Mike Acton [ 2 ] Scott Meyers [ 3 ]และJonathan Blow
อาร์เรย์แบบขนาน (หรือโครงสร้างของอาร์เรย์ ) เป็นตัวอย่างหลักของการออกแบบที่เน้นข้อมูล ซึ่งแตกต่างจากอาร์เรย์ของโครงสร้างที่เป็นลักษณะเฉพาะของการออกแบบเชิงวัตถุ
นิยามของการออกแบบที่เน้นข้อมูลในฐานะกระบวนทัศน์การเขียนโปรแกรมอาจถือได้ว่าเป็นที่ถกเถียงกัน เนื่องจากหลายคนเชื่อว่าสามารถใช้ควบคู่ไปกับกระบวนทัศน์อื่นได้[ 4 ]แต่เนื่องจากการเน้นที่โครงสร้างข้อมูล จึงไม่สามารถใช้งานร่วมกับกระบวนทัศน์อื่นๆ ส่วนใหญ่ได้[ 1 ]
แรงจูงใจ
วิธีการเหล่านี้ได้รับความนิยมอย่างมากในช่วงกลางถึงปลายทศวรรษ 2000 ในยุคของเครื่องเล่นเกมคอนโซลเจเนอเรชั่นที่ 7ซึ่งรวมถึงPlayStation 3 (PS3) และXbox 360ที่ใช้โปรเซสเซอร์IBM PowerPC ในอดีต เครื่องเล่นเกมคอนโซล มักมี หน่วยประมวลผลกลาง (CPU) ที่ค่อนข้างอ่อนแอเมื่อเทียบกับคอมพิวเตอร์เดสก์ท็อประดับสูง นี่เป็นทางเลือกในการออกแบบเพื่อจัดสรรพลังงานและงบประมาณทรานซิสเตอร์ ให้มากขึ้น สำหรับหน่วยประมวลผลกราฟิก (GPU) ตัวอย่างเช่น CPU เจเนอเรชั่นที่ 7 ไม่ได้ผลิตด้วย โปรเซสเซอร์ ประมวลผลแบบไม่เรียงลำดับที่ ทันสมัย แต่ใช้โปรเซสเซอร์แบบเรียงลำดับที่มีความเร็วสัญญาณนาฬิกาสูงและไปป์ไลน์ ที่ลึก นอกจากนี้ ระบบคอมพิวเตอร์ส่วนใหญ่มีหน่วยความจำหลัก ที่อยู่ ห่างจากองค์ประกอบการประมวลผลหลายร้อยรอบสัญญาณนาฬิกายิ่งไปกว่านั้น เมื่อ CPU เร็วขึ้นควบคู่ไปกับการเพิ่มความจุของหน่วยความจำหลักอย่างมาก จะมีการใช้ข้อมูลจำนวนมหาศาลซึ่งเพิ่มโอกาสในการเกิด แคชพลาดในบัสร่วมหรือที่เรียกว่า คอขวด แบบVon Neumannด้วยเหตุนี้ จึงมีการใช้ระเบียบวิธีอ้างอิงตำแหน่ง เพื่อควบคุมประสิทธิภาพ ซึ่งจำเป็นต้องปรับปรุง รูปแบบการเข้าถึงหน่วยความจำเพื่อแก้ไขปัญหาคอขวด ปัญหาซอฟต์แวร์บางอย่างก็คล้ายกับที่พบในItaniumซึ่งจำเป็นต้องใช้การคลายลูปเพื่อกำหนดตารางเวลาล่วงหน้า
เปรียบเทียบกับการวางแนวของวัตถุ
ข้อกล่าวอ้างคือ หลักการออกแบบ การเขียนโปรแกรมเชิงวัตถุ แบบดั้งเดิม (OOP) ส่งผลให้การเข้าถึงข้อมูลไม่ดี[ 5 ] [ 6 ] โดยเฉพาะอย่างยิ่งหาก ใช้โพลีมอร์ฟิซึมแบบรันไทม์ ( การส่งแบบไดนามิก ) (ซึ่งเป็นปัญหาอย่างยิ่งในโปรเซสเซอร์บางตัว) [ 7 ] [ 1 ]แม้ว่า OOP จะดูเหมือน "จัดระเบียบโค้ดรอบข้อมูล" แต่จริงๆ แล้วมันจัดระเบียบซอร์สโค้ดรอบประเภทข้อมูลมากกว่าการจัดกลุ่มฟิลด์และอาร์เรย์แต่ละรายการในรูปแบบที่มีประสิทธิภาพสำหรับการเข้าถึงโดยฟังก์ชันเฉพาะ ยิ่งไปกว่านั้น มันมักจะซ่อนรายละเอียดเค้าโครงไว้ภายใต้เลเยอร์นามธรรมในขณะที่โปรแกรมเมอร์ที่เน้นข้อมูลต้องการพิจารณาสิ่งนี้เป็นอันดับแรกและสำคัญที่สุด
ดูเพิ่มเติม
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ การออกแบบที่เน้นข้อมูล
ในด้านการคำนวณการออกแบบที่เน้นข้อมูลเป็น แนวทาง การเพิ่มประสิทธิภาพโปรแกรมที่ได้รับแรงบันดาลใจจากการใช้แคช CPU อย่างมีประสิทธิภาพ...
แรงจูงใจ
วิธีการเหล่านี้ได้รับความนิยมอย่างมากในช่วงกลางถึงปลายทศวรรษ 2000 ใน ยุคของเครื่องเล่นเกมคอนโซลเจเนอเรชั่นที่ 7 ซึ่งรวมถึง PlayStation 3 (PS3) และ Xbox 360 ที่ใช้โปรเซสเซอร์ IBM PowerPC ในอดีต เครื่องเล่นเกมคอนโซล มักมี หน่วยประมวลผลกลาง (CPU)...
เปรียบเทียบกับการวางแนวของวัตถุ
ข้อกล่าวอ้างคือ หลักการออกแบบ การเขียนโปรแกรมเชิงวัตถุ แบบดั้งเดิม (OOP) ส่งผลให้การเข้าถึงข้อมูลไม่ดี [ 5 ] [ 6 ] โดยเฉพาะอย่างยิ่งหาก ใช้โพลีมอร์ฟิซึมแบบรันไทม์ ( การส่งแบบไดนามิก ) (ซึ่งเป็นปัญหาอย่างยิ่งในโปรเซสเซอร์บางตัว) [ 7 ] [ 1 ] แม้ว่า OOP...
ดูเพิ่มเติม
แคช CPU การเขียนโปรแกรมโดยใช้ข้อมูลเป็นหลัก ระบบส่วนประกอบเอนทิตี รูปแบบการเข้าถึงหน่วยความจำ การพัฒนาวิดีโอเกม ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Data-oriented_design&oldid=1330544974 "