お知らせ:
拡張編集0.93でLuajitが採用されたのでこちらはもう必要ありません。また、DLLが古いためかカウンターなどで問題が起こるようです。ダウンロード
Lua側の計算が多そうなスクリプトで試してみましたが、約10~50%程度しか高速化されませんでした。 ほとんどのスクリプトでは誤差レベルです。
x264guiexのデフォルト設定でエンコード。ログの「x264エンコード時間」を集計。
スクリプトのみで構成された動画なので前述のベンチマークとほぼ同程度の高速化が図れました。
LuaJITを使用してもプレビューが軽くなるまでの影響はないですが、重めのスクリプトを多用する場合はエンコード時間の短縮に十分効果があると言えそうです。
ダウンロード
LuaJIT-2.0.4-win-x86.zip
Ver2.0.4(Lua5.1) 2016/04/13
拡張編集に付属しているLua.txtを眺めていて次の一文を見つけました。
- Luaのバイナリについて -付属のlua51.dllはLuaの本家サイトにあるバージョン5.1.4に5.1.4-2のパッチを当ててビルドしたものです。
もし付属のDLLが通常のVMバージョンなら、JITに置き換えればそれなりの高速化が望めそうです。
というわけで早速試してみましょう。
インストール
まずはLuaJITからソースをダウンロードしてビルドします。
VisualStudio2015なら付属しているmsvcbuild.batをVS2015コマンドプロンプトから実行するだけで済みます。
今回はコンパイラオプションの/MDを/MTに置き換えてC Runtimeを不要にしました。
ビルドしたものをページの先頭に上げてあるので、よく分からない場合はこれを使用してください。
Aviutlで利用するのはlua51.dllのみです。拡張編集に付属していたものをバックアップしてから上書きしましょう。
ベンチマーク
とりあえず高速化されたかどうか試すためにフィボナッチで計測してみました。test.exo1 | 2 | 3 | 4 | 5 | |
通常 | 15.563秒 | 15.610 | 15.595 | 15.392 | 15.626 |
LuaJIT | 0.8850秒 | 0.7460 | 0.9100 | 0.9050 | 0.9029 |
約17倍ほど速くなっています。やはり拡張編集に付属のDLLは通常のVMのようですね。
本家のベンチマークを見ると100倍以上速くなるケースもあるようです。フィボナッチ(recursive-fib)は18.17倍となっているので今回の結果も妥当でしょう。
さて、Aviutl向けのより実践的なベンチマークも取ってみましょう。
1 | 2 | 3 | 4 | 5 | |
通常 | 0.1409 | 0.1250 | 0.1180 | 0.1399 | 0.1089 |
LuaJIT | 0.0990 | 0.1080 | 0.0980 | 0.1070 | 0.1030 |
1 | 2 | 3 | 4 | 5 | |
通常 | 0.0150 | 0.0150 | 0.0160 | 0.0159 | 0.0159 |
LuaJIT | 0.0099 | 0.0109 | 0.0100 | 0.0110 | 0.0109 |
Lua側の計算が多そうなスクリプトで試してみましたが、約10~50%程度しか高速化されませんでした。 ほとんどのスクリプトでは誤差レベルです。
拡張編集ではobj.effect()やobj.draw()などの描画処理が処理の大半を占めるので、luaだけが高速化されてもほとんど効果がありません。
それでも塵も積もれば何とやらですから、スクリプトを大量投入する方や、少しでもエンコードを早くしたい方は試してみてはいかがでしょうか。
それでも塵も積もれば何とやらですから、スクリプトを大量投入する方や、少しでもエンコードを早くしたい方は試してみてはいかがでしょうか。
追記
エンコード速度に関しても検証してみました。x264guiexのデフォルト設定でエンコード。ログの「x264エンコード時間」を集計。
1 | 2 | 3 | avg. | ratio | |
通常 | 0分25.3秒 | 0分26.1秒 | 0分25.9秒 | 0分25.7秒 | x1.00 |
LuaJIT | 0分23.8秒 | 0分23.3秒 | 0分24.1秒 | 0分23.7秒 | x1.08 |
1 | 2 | 3 | avg. | ratio | |
通常 | 0分17.9秒 | 0分18.1秒 | 0分18.0秒 | 0分18.0秒 | x1.00 |
LuaJIT | 0分12.0秒 | 0分12.0秒 | 0分12.0秒 | 0分12.0秒 | x1.50 |
スクリプトのみで構成された動画なので前述のベンチマークとほぼ同程度の高速化が図れました。
LuaJITを使用してもプレビューが軽くなるまでの影響はないですが、重めのスクリプトを多用する場合はエンコード時間の短縮に十分効果があると言えそうです。
コメント
コメント一覧 (1)