4

dostring()ではなく、LuaInterface の機能を介して実行するためにメモリに繰り返し呼び出される lua スクリプトをロードすることで、パフォーマンスの向上を合理的に期待できるかどうか誰か教えてもらえますdofile()か?

反復ごとにファイルシステムへのアクセスを減らすことで、これがより良いパフォーマンスを発揮すると仮定するのは正しいですか?

Lua VM内でスクリプトをキャッシュする方法はありますか?

4

2 に答える 2

1

いくつかのluaコードを何度も実行したい場合は、LoadFileまたはLoadStringを使用するのがより良い方法です。次のように、luaコードをLuaFunctionとしてロードします。

LuaFunction lf = xxx.LoadString("some lua code");   // xxx is an instance of LuaInterface
lf.Call();   // you can also deliver some arguments

これは、DoFileANDDoStringよりもはるかに高速です。コンパイルは1回だけで済みます。

于 2013-02-28T14:47:14.150 に答える
1

反復ごとにファイルシステムへのアクセスを減らすことで、これがより良いパフォーマンスを発揮すると仮定するのは正しいですか?

一般に、想定ではなくベンチマークを行う必要がありますが、これはかなり切り詰めたものです。「ディスク IO、コンパイル、実行」と「実行」です。もちろん後者の方が速いです。

Lua VM 内でスクリプトをキャッシュする方法はありますか?

あなたdofileまたはdostringあなたのスクリプトが生成するグローバルは、読み取り/呼び出しに利用できます。スクリプトが VM のグローバル名前空間を変更するのを避けたい場合は、スクリプトが呼び出してコールバックを登録できる API ルーチンを (ホストで) 公開できます。

于 2013-02-19T23:37:14.953 に答える