Estou desenvolvendo alguns algoritmos em Lua, que são executados principalmente em Lua (poucas chamadas para C ++) e estou percebendo uma grande lentidão quando os estou executando no meu aplicativo, em vez do interpretador Lua padrão. O script retorna em aproximadamente 11 segundos com o intérprete e em mais de 5 minutos no meu programa.
Eu não acho que seja um problema chamar a função C ++, substituir essa função por uma função vazia no script não tem efeito perceptível por um tempo.
Lua e o programa são compilados com o Visual Studio 2010 (criei uma nova solução para Lua, com projetos para o intérprete e a biblioteca estática)
Eu executei um criador de perfil no código (o Very Sleepy Profiler, não pode fazer com que um criador de Lua funcione, mas ainda não tentei muito) e descobri que no meu aplicativo cerca de 50% do tempo é gasto em malloc .. e Com 40% de graça, ambos chamados pelo coletor de lixo Lua (tentei desabilitar isso para verificar, mas isso trava com o uso de muita memória (compreensivelmente)), o intérprete Lua espia cerca de 4 MB de uso de RAM).
Eu sou novo em Lua, então é muito possível que eu tenha feito algo errado em algum lugar, alguém tem algumas dicas para tentar?