답변:
TL; DR : Lua에는 오버 헤드가 있지만 올바르게 사용하면 무시할 수 있고 쉽게 완화됩니다. 무거운 수학 연산이나 변형 형상에는 사용하지 마십시오. GUI를 스크립팅하는 데 성능 문제가 전혀 없을 것입니다.
게임 스크립팅 언어로서의 Lua의 성능에 관한 몇 가지 기본 벤치 마크를 수행했으며 매우 빠릅니다. tolua ++를 사용하여 LuaJIT를 게임 엔진에 바인딩하여 2,000 명의 액터를 생성했습니다. 각 액터는 모든 게임 루프 (시간 델타 인수 포함)라는 Lua 스크립트로 제어됩니다. 배우의 절반은 무리를 짓는 대본이 있었고 나머지 절반은 일종의 무작위 걷기를하고있었습니다 (그리고 무리는 피했습니다).
렌더링 구성 요소를 끄면 Opteron 170에서 초당 400 틱 이상이 나왔습니다 (2x2.0GHz, 당시 엔진은 단일 스레드였습니다). 필자가 파고 최적화하면 무거운 작업 중 일부를 C ++로 다시 옮기는 것보다 훨씬 더 많이 짜낼 수 있다고 생각합니다. 초당 400 배의 배우를 업데이트하는 것은 여전히 인상적이며 당시의 기대치를 훨씬 뛰어 넘었습니다.
이제 모든 프로젝트에서 Lua를 사용하고 실제로 실제 게임 코드 (AI, GUI 레이아웃 / 논리, 이벤트 / 메시지)의 상당 부분을 구성합니다. 종료, 재 컴파일 및 재 초기화하지 않고 빠르게 무언가를 변경하고 테스트 할 수있을 때 게임을 만드는 것이 훨씬 재미있어집니다. 때때로 성능 문제가 발생하지만 C ++에서 문제가되는 코드를 다시 구현 한 다음 Lua에서 호출하면 쉽게 해결할 수 있습니다.
주제가 약간 다르지만 EVE Online의 서버는 거의 완전히 Stackless Python으로 작성되었습니다 (나는 대부분의 수학 연산을 C ++ lib로 연기한다고 생각합니다). LuaJIT보다 성능이 훨씬 낮은 벤치 마크. 그들은 너무 많은 문제없이 30k + 동시 플레이어를 처리 할 수 있습니다. 물론, 그들은 모두 고가의 하드웨어를 가지고 있지만 대부분의 비용은 데이터베이스 클러스터에 있다고 생각합니다.
텍스트의 벽에 대한 사과.