私が知っている:http: //lua-users.org/wiki/SimpleLuaApiExample
エントリごとにテーブル(キー、値)ペアのエントリを作成する方法を示します。
代わりに、巨大なテーブル(たとえば、キーと値の両方が文字列である1000エントリテーブル)を作成したいとします。これをluaですばやく実行する方法はありますか(エントリごとに4つのfunc呼び出しではありません:
push
key
value
rawset
私が知っている:http: //lua-users.org/wiki/SimpleLuaApiExample
エントリごとにテーブル(キー、値)ペアのエントリを作成する方法を示します。
代わりに、巨大なテーブル(たとえば、キーと値の両方が文字列である1000エントリテーブル)を作成したいとします。これをluaですばやく実行する方法はありますか(エントリごとに4つのfunc呼び出しではありません:
push
key
value
rawset
あなたが書いたことは、この問題を解決するための迅速な方法です。 Lua テーブルは見事に設計されており、「このテーブルは 1000 個の要素を含むようになると予想されます」という偽の「ヒント」を必要としないほど十分に高速です。
文字列キーの場合は、lua_setfield
.
createtable を使用して、必要な数のスロットが既にあるテーブルを作成できます。ただし、その後は、それ以外に速くする方法はありません
for(int i = 0; i < 1000; i++) {
lua_push... // key
lua_push... // value
lua_rawset(L, tableindex);
}
残念ながら、連想テーブル (文字列キー、非連続整数キー) の場合はありません。
配列タイプのテーブル (通常の 1...N 整数インデックスが使用されている場合) には、パフォーマンスが最適化された関数がいくつかありlua_rawgeti
ますlua_rawseti
: http://www.lua.org/pil/27.1.html