[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Performance question
- From: "Kevin Baca" <lualist@...>
- Date: Wed, 24 Sep 2003 13:10:19 -0700
I have several lua-callable functions implemented in C, each of which
takes multiple parameters.
I can either pass each parameter on the lua stack, or I can create a
table, fill it with the parameters, then pass it as a single parameter
to the function.
In many cases, the table of parameters already exists (e.g. a vector)
and does not need to be created on the fly.
So, my question is, in terms of performance, which is better?
Here is an example:
Method 1: Multiple parameters on stack
---------------------------------------
Lua code:
--t is a pre-existing table
func( t.a, t.b )
C code:
static int func( lua_State* L )
{
int a = luaL_check_int( L, 1 );
int b = luaL_check_int( L, 2 );
return 0;
}
Method 2: Single table containing parameters
---------------------------------------------
Lua code:
--t is a pre-existing table
func( t )
C code:
static int func( lua_State* L )
{
lua_pushliteral( L, "a" );
lua_gettable( L, 1 )
int a = luaL_check_int( L, -1 );
lua_pushliteral( L, "b" );
lua_gettable( L, 1 )
int b = luaL_check_int( L, -1 );
return 0;
}
By appearances the first example, I believe, involves more work on the
lua side, while the second example involves more work on the C side.
So, which is optimal?
-Kevin