TL; DR: Lua ha un overhead, ma se usato correttamente è trascurabile e facilmente mitigabile. Non utilizzarlo per operazioni matematiche pesanti o per trasformare la geometria. Probabilmente non vedrai alcun problema di prestazioni usandolo per lo script di una GUI.
Ho fatto alcuni benchmark di base per quanto riguarda le prestazioni di Lua come linguaggio di scripting di gioco, ed è abbastanza veloce. Usando tolua ++ per legare LuaJIT al mio motore di gioco, ho generato 2000 attori, ogni attore controllato da uno script Lua chiamato ogni ciclo di gioco (con un argomento time-delta). La metà degli attori aveva una sceneggiatura in affollamento e l'altra metà stava facendo una sorta di camminata casuale (e fu evitata dal gregge).
La disattivazione del componente di rendering mi ha dato un po 'più di 400 tick al secondo sul mio Opteron 170 (2x2.0GHz, anche se il mio motore era a thread singolo al momento). Immagino che avrei potuto spremerci un po 'di più se avessi scavato e ottimizzato, forse spostando parte del lavoro pesante in C ++. Aggiornare 2000 attori 400 volte al secondo era ancora piuttosto impressionante, e all'epoca superava di gran lunga le mie aspettative.
Ora uso Lua in tutti i miei progetti, e in realtà costituisce una parte considerevole del codice di gioco effettivo (AI, layout / logica della GUI, Eventi / Messaggi). Rendere i giochi è MOLTO più divertente quando puoi cambiare rapidamente qualcosa e testarlo senza dover uscire, ricompilare e reinizializzare. Di tanto in tanto ho riscontrato alcuni problemi di prestazioni, ma questi sono facilmente risolti reimplementando il codice offensivo in C ++ (e quindi chiamandolo da Lua).
Sebbene leggermente fuori tema, i server di EVE Online sono scritti quasi completamente in Stackless Python (credo che rinviano la maggior parte delle loro operazioni matematiche a una libreria C ++), che è considerevolmente più pesante di Lua e, sulla base delle mie ricerche personali e di numerosi disponibili benchmark, molto meno performanti di LuaJIT. Riescono a gestire 30k + giocatori simultanei senza troppi problemi. Certo, hanno un sacco di hardware costoso che esegue tutto questo, ma credo che la maggior parte dei costi sia nel loro cluster di database ...
Ci scusiamo per il muro di testo.