Я использую функцию API Lua «C» luaL_loadbuffer()
для запуска кода Lua.Как я могу предварительно скомпилировать Lua, который я передаю luaL_loadbuffer()?
У меня есть небольшая горстка Lua chunks, которую я звоню много раз. Но каждый раз, когда я звоню luaL_loadbuffer()
, кусок перекомпилируется. Это кажется крайне неэффективным. Большая часть кода, на который ссылается кусок, предварительно скомпилирована, но зачем мне перекомпилировать кусок каждый раз? Как я могу избежать этой перекомпиляции?
Могу ли я передать предварительно скомпилированный кусок до luaL_loadbuffer()
?
Могу ли я сделать полную копию возвращенного стека Lua и повторно использовать его?
Есть ли какой-нибудь другой умный подход?
Возвращенный кусок ** это ** ваш скомпилированный код. Если вы хотите запустить его более одного раза, сохраните его и запустите позже. Не стек, возвращенный кусок сам. –
Под «возвращенным куском» вы имеете в виду тот, который находится в стеке, да? Могу ли я сохранить это использование в новом (чистом) стеке LUA? Или мне нужно использовать один и тот же стек, но просто убедитесь, что я все вытащил из него и снова надавил этот кусок? –
Да, один в стеке. Нет, вы не можете перенести его на другой lua_State. Да, вы можете сохранить его в том же lua_State и использовать его позже. Это lua_State не стек. (Текущий) стек - это переходная вещь в большинстве случаев. Lua_State нет. –