TL; DR: Lua'nın ek yükü vardır, ancak düzgün kullanılırsa ihmal edilebilir ve kolayca hafifletilebilir. Ağır matematik işlemleri veya dönüşüm geometrisi için kullanmayın. Muhtemelen bir GUI komut dosyası yazmak için herhangi bir performans problemi görmeyeceksiniz.
Lua'nın bir oyun senaryosu dili olarak performansı ile ilgili bazı temel kriterler yaptım ve oldukça hızlı. LuaJIT'i oyun motoruma bağlamak için tolua ++ kullanarak, her oyuncu her oyun döngüsü (zaman-delta argümanı ile) denilen bir Lua betiği tarafından kontrol edilen 2.000 aktör ortaya çıkardı. Aktörlerin yarısının akın senaryosu vardı ve diğer yarısı bir çeşit rastgele yürüyüş yapıyorlardı (ve sürülerden kaçınılmıştı).
Görüntü oluşturma bileşenini kapatmak Opteron 170 (2x2.0GHz'de saniyede 400'den fazla keneler verdi), ancak motorum o sırada tek iş parçacıklıydı. Ben kazdık ve optimize eğer belki biraz ağır sıkılmış olabilir hayal olabilir, belki de bazı ağır iş C ++ içine geri taşımak. Saniyede 400 kez 2000 oyuncunun güncellenmesi hala oldukça etkileyiciydi ve o zamanki beklentilerimin çok üzerinde.
Artık tüm projelerimde Lua kullanıyorum ve aslında gerçek oyun kodunun (AI, GUI düzeni / mantığı, Olaylar / Mesajlar) oldukça büyük bir bölümünü oluşturuyor. Çıkmak, yeniden derlemek ve yeniden başlatmak zorunda kalmadan bir şeyi hızlı bir şekilde değiştirip test edebildiğinizde oyun yapmak ÇOK daha eğlencelidir. Zaman zaman bazı performans sorunları ile karşılaştım, ama bu kolayca C + + (ve sonra Lua çağıran) rahatsız edici kodu yeniden uygulayarak çözüldü.
Biraz konu dışı olsa da, EVE Online'ın sunucuları neredeyse tamamen Stackless Python'da yazılmaktadır (matematik işlemlerinin çoğunu Lua'dan oldukça ağır olan ve kendi kişisel araştırmalarıma ve mevcut birkaç araştırmaya dayalı olarak C ++ lib'e ertelediklerine inanıyorum) karşılaştırmalar, LuaJIT'den çok daha az performans. 30k + eşzamanlı oyuncuyu çok fazla sorun olmadan ele almayı başarıyorlar. Verilmiş, tüm bunlar çalışan bir ton pahalı donanım var, ama maliyet çoğunluğu kendi veritabanı kümesinde olduğuna inanıyorum ...
Metin duvarı için özür dilerim.