TL; DR: Lua มีค่าใช้จ่าย แต่ถ้าใช้อย่างถูกต้องจะเล็กน้อยและบรรเทาได้ง่าย อย่าใช้มันสำหรับการดำเนินการทางคณิตศาสตร์อย่างหนักหรือเปลี่ยนรูปทรงเรขาคณิต คุณอาจจะไม่เห็นปัญหาประสิทธิภาพใด ๆ เลยเมื่อใช้สคริปต์ GUI
ฉันได้ทำเกณฑ์พื้นฐานบางอย่างเกี่ยวกับการทำงานของ Lua ในฐานะภาษาสคริปต์ของเกมและมันค่อนข้างเร็วมาก การใช้ tolua ++ เพื่อผูก LuaJIT กับเครื่องมือเกมของฉันฉันวางไข่นักแสดง 2,000 คนโดยนักแสดงแต่ละคนควบคุมโดยสคริปต์ Lua ที่เรียกว่าวนรอบเกมทุกครั้ง นักแสดงครึ่งหนึ่งมีสคริปต์ flocking และอีกครึ่งหนึ่งกำลังทำการเดินสุ่ม (และหลีกเลี่ยงฝูง)
การปิดองค์ประกอบการแสดงผลทำให้ฉันมีมากกว่า 400 ขีดต่อวินาทีใน Opteron 170 ของฉัน (2x2.0GHz แม้ว่าเครื่องยนต์ของฉันจะเป็นเธรดเดี่ยวในเวลานั้น) ฉันคิดว่าฉันสามารถบีบออกได้มากกว่านั้นถ้าฉันขุดและปรับให้เหมาะสมอาจจะย้ายงานหนักบางส่วนกลับไปที่ C ++ การอัปเดตนักแสดง 2000 คน 400 ครั้งต่อวินาทีก็ยังค่อนข้างน่าประทับใจและเกินความคาดหมายของฉันในเวลานั้น
ตอนนี้ฉันใช้ Lua ในทุกโครงการของฉันและจริง ๆ แล้วถือว่าเป็นส่วนใหญ่ของรหัสเกมจริง (AI, รูปแบบ GUI / ตรรกะ, เหตุการณ์ / ข้อความ) การสร้างเกมเป็นเรื่องสนุกมากขึ้นเมื่อคุณสามารถเปลี่ยนบางสิ่งได้อย่างรวดเร็วและทดสอบโดยไม่ต้องออกจากคอมไพล์ใหม่และเริ่มต้นใหม่ ฉันพบปัญหาเกี่ยวกับประสิทธิภาพเป็นครั้งคราว แต่สิ่งเหล่านี้สามารถแก้ไขได้อย่างง่ายดายโดยการปรับใช้รหัสผิดใน C ++ อีกครั้ง (แล้วเรียกมันจาก Lua)
ในขณะที่อยู่นอกหัวข้อเล็กน้อยเซิร์ฟเวอร์ของ EVE Online เขียนเกือบทั้งหมดใน Stackless Python (ฉันเชื่อว่าพวกเขาเลื่อนการดำเนินการทางคณิตศาสตร์ส่วนใหญ่ไปยัง C ++ lib) ซึ่งหนักกว่า Lua มากและขึ้นอยู่กับการวิจัยส่วนตัวของฉัน เกณฑ์มาตรฐานประสิทธิภาพต่ำกว่า LuaJIT พวกเขาจัดการกับผู้เล่นพร้อมกัน 30k + โดยไม่มีปัญหามากเกินไป จริงอยู่ที่พวกเขามีฮาร์ดแวร์ราคาแพงจำนวนมากที่ใช้งานได้ทั้งหมด แต่ฉันเชื่อว่าต้นทุนส่วนใหญ่อยู่ในกลุ่มฐานข้อมูล ...
ขอโทษสำหรับกำแพงของข้อความ