1

http://luaj.org/luaj/README.html

私はLuajを使用してJavaアプリケーションでLuaコードを実行しています。結果が非常に遅いので、実行する前にコードをコンパイルして、Luaスクリプトの実際の処理時間を計算したいと思います。

問題は-Luajはコマンドプロンプトを介してLuaソースをLuaまたはJavaバイトコードにコンパイルする方法の例を示していますが、JavaアプリケーションでLuaスクリプトをコンパイルするための行を示していません。

Luaスクリプトをコンパイルして実行する方法のみを示しています。

import org.luaj.vm2.*;
import org.luaj.vm2.lib.jse.*;

String script = "examples/lua/hello.lua";
LuaValue _G = JsePlatform.standardGlobals();
_G.get("dofile").call( LuaValue.valueOf(script) );

LuaをLuaまたはJavaバイトコードにコンパイルするだけで、バイトコードファイルを出力するコードを見つけたいと思います。

4

1 に答える 1

1

LuaJには、Luaからバイトコードへのコンパイラが含まれています。したがって、ソースコードを見るだけです。ここで最も関連性の高い部分を抽出しました。

private void processScript( InputStream script, String chunkname, OutputStream out ) throws IOException {
    try {
        // create the chunk
        Prototype chunk = LuaC.instance.compile(script, chunkname);

        // list the chunk
        if (list)
            Print.printCode(chunk);

        // write out the chunk
        if (!parseonly) {
            DumpState.dump(chunk, out, stripdebug, numberformat, littleendian);
        }

    } catch ( Exception e ) {
        e.printStackTrace( System.err );
    } finally {
        script.close();
    }
}

バイトコードがそれを生成したLuaの実装と互換性があることだけに本当に頼ることができることを覚えておいてください。

于 2013-03-26T18:12:10.223 に答える