詳解C調(diào)用lua腳本效率測試
作者:佚名
C調(diào)用lua腳本效率測試是本文要介紹的內(nèi)容,以下代碼以C語言為基準(zhǔn),測試了C調(diào)用Lua循環(huán)和循環(huán)調(diào)用Lua的效率,來看詳細(xì)內(nèi)容。
C調(diào)用lua腳本效率測試是本文要介紹的內(nèi)容,以下代碼以C語言為基準(zhǔn),測試了C調(diào)用Lua循環(huán)和循環(huán)調(diào)用Lua的效率。結(jié)論是不要頻繁地穿越C/Lua邊界.
- #include <time.h>
- extern "C"
- {
- #include "lua.h"
- #include "lualib.h"
- #include "lauxlib.h"
- }/* Lua解釋器指針 */
- const char LUA_SCRIPT[] =
- "function loop_add(a, b) "
- " local sum = 0 "
- " for i = 1, 10000000 do "
- " sumsum = sum + a + b "
- " end "
- " return sum "
- "end "
- " "
- "function add(a, b) "
- " return a + b "
- "end "
- ;
- // lua 腳本里面的函數(shù)由C調(diào)用
- int use_lua_add(lua_State *L, const char *func_name, int x, int y)
- {
- int sum; /* 通過名字得到Lua函數(shù) */
- lua_getglobal(L, func_name); /* ***個參數(shù) */
- lua_pushnumber(L, x); /* 第二個參數(shù) */
- lua_pushnumber(L, y); /* 調(diào)用函數(shù),告知有兩個參數(shù),一個返回值 */
- lua_call(L, 2, 1); /* 得到結(jié)果 */
- sum = (int)lua_tointeger(L, -1);
- lua_pop(L, 1);
- return sum;
- }
- int main()
- {
- int i, sum = 0;
- clock_t tStart, tStop;
- lua_State *L = lua_open(); /* opens Lua */
- luaL_openlibs(L);
- if (luaL_dostring(L, LUA_SCRIPT)) // Run lua script
- {
- printf("run script failed/n");
- lua_close(L);
- return -1;
- }
- sum = 0;
- tStart = clock();
- for (i = 0; i < 10000000; i++)
- {
- sum += 1 + 1;
- }
- tStop = clock();
- printf("C++: %dms./nThe sum is %u./n",
- (tStop - tStart) * 1000 / CLOCKS_PER_SEC, sum);
- sum = 0;
- tStart = clock();
- sum = use_lua_add(L, "loop_add", 1, 1);
- tStop = clock();
- printf("Lua loop_add: %dms./nThe sum is %u./n",
- (tStop - tStart) * 1000 / CLOCKS_PER_SEC, sum);
- sum = 0;
- tStart = clock();
- for (i = 0; i < 10000000; i++)
- {
- sum += use_lua_add(L, "add", 1, 1);
- }
- tStop = clock();
- printf("Loop lua add: %dms./nThe sum is %u./n",
- (tStop - tStart) * 1000 / CLOCKS_PER_SEC, sum);
- lua_close(L);
- return 0;
- }
運行結(jié)果:
- C++: 31ms.
- The sum is 20000000.
- Lua loop_add: 437ms.
- The sum is 20000000.
- Loop lua add: 2360ms.
- The sum is 20000000.
小結(jié):詳解C調(diào)用lua腳本效率測試的內(nèi)容介紹完了,希望通過本文的學(xué)習(xí)能對你有所幫助!
責(zé)任編輯:zhaolei
來源:
網(wǎng)絡(luò)轉(zhuǎn)載