STL มีประสิทธิภาพเพียงพอสำหรับอุปกรณ์พกพาหรือไม่


9

เมื่อพูดถึงการพัฒนาเกมมือถือบน iOS และ Android NDK นักพัฒนาบางคนเขียนคอนเทนเนอร์ C ++ ของตัวเองขณะที่คนอื่นอ้างว่า STL นั้นเพียงพอสำหรับการพัฒนาเกมมือถือ (ตัวอย่างเช่นผู้เขียนโปรแกรม 3D iPhone ใช้ STL แทนวัตถุประสงค์ - C ในตัวอย่างของเขาการป้องกันของเขาคือ STL นั้นไม่ช้ากว่า Objective-C)

จากนั้นก็มีนักพัฒนามือถือที่ละทิ้ง C ++ ทั้งหมดและพัฒนาเกมทั้งหมด (หรือส่วนใหญ่) ในภาษา C (C89 / C90)

ประโยชน์และข้อเสียของแต่ละวิธีมีอะไรบ้าง


4
การวิพากษ์วิจารณ์หลักต่อ STL คือรูปแบบการจัดสรรหน่วยความจำที่คาดเดาไม่ได้และการสนับสนุนคอมไพเลอร์ปัญหาทั้งสองสามารถแก้ไขได้โดยใช้ทางเลือก STL เช่น EASTL หรือ STLPort
Raphael R.

1
คำตอบหลายข้อจากคำถามนี้: gamedev.stackexchange.com/questions/268/…ให้ แตะบนแพลตฟอร์มมือถือและควรให้คำตอบกับคุณ
Tetrad

5
ฉันสงสัยว่าหลายคนที่ "กำลังละทิ้ง" (ชอบมากกว่าไม่เคยใช้) C ++ บนแพลตฟอร์มมือถือมันมีความรู้ STL น้อยกว่าและเกี่ยวกับความงุ่มง่ามของ Objective-C ++ (และการสนับสนุน C ++ ที่ล่าช้าโดยทั่วไปใน toolchain ของ Apple)

คำถามจริงคือคุณสามารถเขียนได้ดีขึ้น? คุณเข้าใจการ STL ได้ดีขึ้น และในกรณีที่มันไม่ได้ทำสิ่งที่คุณต้องการการใช้พฤติกรรมที่คุณต้องการ
decaviatedcaviar

คำตอบ:


6

ฉันจะบอกคุณสิ่งหนึ่งก่อน C ++ เร็วกว่าการโทร Objective-C Objective-C ใช้ข้อความที่ผ่านระบบดังนั้นมันจะมีค่าใช้จ่ายในการดำเนินการเมื่อเปรียบเทียบกับ C ++ เพียงแค่มีลักษณะที่บางส่วนของรถที่นี่

สำหรับการพัฒนา "แอพ" ทั่วไปของ iOS มันสมเหตุสมผลที่จะใช้ฟังก์ชั่นในตัวของ Objective-C เนื่องจากประสิทธิภาพอาจไม่ได้มาตรฐานเท่าที่ควร แต่ในการพัฒนาเกมเราต้องพิจารณาผลลัพธ์เหล่านี้

เมื่อฉันทำงานในโครงการก่อนหน้าของฉัน (Robokill) เราปรับรหัสส่วนใหญ่ที่จำเป็นสำหรับการโทรแบบธรรมดา -C (เราแปลงคลาส Objective-C เป็นคลาส C ++) หรือคุณสามารถใช้ฟังก์ชัน Objective-C runtime สำหรับการโทรโดยตรง

มาถึงคำถามของคุณนี่คือคำตอบของฉัน: ใช่ STL เหมาะดีสำหรับจุดประสงค์ของมัน แม้ว่ารหัสการใช้งานจะไม่สามารถอ่านได้มาก แต่ก็น่าสนใจที่จะตรวจสอบการติดตั้งครั้งเดียว

อย่างไรก็ตามเราสามารถปรับโค้ด Objecive-C ให้เหมาะสมได้ในระดับหนึ่งโดยการแคชพอยน์เตอร์ของฟังก์ชั่นล่วงหน้าและทำการโทรด้วย Objective-C runtime

หวังว่านี่จะช่วยได้!

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