TL; DR: Lua має накладні витрати, але при правильному використанні це незначно і легко пом'якшується. Не використовуйте його для важких математичних операцій або перетворення геометрії. Ви, мабуть, не побачите проблем із продуктивністю, використовуючи його для скрипту графічного інтерфейсу.
Я зробив кілька основних орієнтирів щодо продуктивності Lua як мови сценаріїв гри, і це досить чортово швидко. Використовуючи tolua ++, щоб прив’язати LuaJIT до свого ігрового двигуна, я породив 2000 акторів, кожен актор, керований сценарієм Lua, який називається кожним циклом гри (з аргументом часу-дельта). Половина акторів мала сценарій зграйку, а інша половина робила щось на кшталт випадкової прогулянки (і їх отара уникала).
Відключення компонента візуалізації дало мені трохи більше 400 кліщів за секунду на моєму Opteron 170 (2x2.0GHz, хоча мої двигуни були однопоточні на той час). Я гадаю, що міг би витіснити трохи більше, ніж якби я занурився і оптимізував, можливо, перемістивши якусь важку роботу назад у C ++. Оновлення 2000 акторів 400 разів на секунду все ще було досить вражаючим і набагато перевершило мої сподівання на той час.
Зараз я використовую Lua у всіх своїх проектах, і він фактично становить досить велику частину фактичного коду гри (AI, макет / логіка графічного інтерфейсу, події / повідомлення). Створення ігор набагато веселіше, коли ви можете швидко щось змінити та протестувати, не виходячи з перекомпіляції та повторної ініціалізації. Час від часу я стикався з деякими проблемами продуктивності, але їх легко вирішити шляхом повторного внесення коду, що порушує в C ++ (а потім викликає його від Lua).
Хоча трохи поза темою, сервери EVE Online майже повністю написані на Stackless Python (я вважаю, що вони відкладають більшість своїх математичних операцій на C ++ lib), що значно важче, ніж у Lua, і, грунтуючись на моїх власних особистих дослідженнях та кількох доступних орієнтири, набагато менш ефективні, ніж LuaJIT. Їм вдається обробляти 30k + одночасних гравців без занадто багато проблем. Зрозуміло, у них є тонна дорога апаратна техніка, на якій працює все це, але я вважаю, що більша частина витрат лежить у їх кластерній базі даних ...
Вибачення за стіну тексту.