我有一个 HTTP 服务器需要处理来自 Lua 代码的 HTTP 请求。从 C 代码中,我以这种方式调用一些 Lua C API(想法来自这里):
lua_State *L = luaL_newstate();
luaL_openlibs(L);
luaL_loadfile(L, "some.lua");
lua_pcall(L, 0, 0, 0); /* preload */
lua_getglobal(L, "handle");
lua_pushstring(L, "http_request");
lua_pcall(L, 1, 1, 0);
lua_close(L);
这一堆代码针对每个 HTTP 请求运行。在多线程工作者上下文中,此代码具有相当大的性能成本(从 20000tps 到 100tps)。我想知道有没有更有效的方法从 C 调用 Lua 代码?
更新
当我注释掉所有这些 Lua C API 调用时,我可以达到 20000tps。但是当打开这个API调用时,100tps。当在some.lua中进行一些更改(去掉require
调用,只加载一个空的 Lua 文件),然后性能就达到了 15000tps 左右。
那么,至少这些 API 调用成本大约 5000tps,如何让这个 API 调用更快呢?