現在、Rhino を使用してスタンドアローン モードで JavaScript を実行するパフォーマンスを向上させることができるかどうかを尋ねたいと思いました。
Rhino、EnvJS + JQuery スクリプトの実行中にパフォーマンスの問題があります。
スクリプトは次のとおりです。
load('tools/envjs/env.rhino.js')
window.location = "test.html"
load('tools/jquery.js')
// add TOC div
$('body').append('<div id="toc"></div>');
// Build TOC
$("h1, h2, h3").each(function(i) {
var current = $(this);
current.attr("id", "title" + i);
var pos = current.position().top / $("#content").height() * $(window).height();
$("#toc").append("<a id='link" + i + "' href='#title" + i +
"' title='" + current.attr("tagName") + "'>" +
current.html() + "</a>");
$("#link" + i).css("top", pos);
});
Envjs.writeToFile(document.documentElement.outerHTML, Envjs.uri('test-toc.html'))
これは、入力 HTML ドキュメントの TOC を作成するために Web で見つけたスクリプトを少し変更したバージョンです。
次のコマンドを使用して、3.06Ghz プロセッサのコマンドラインで実行します。
$ time java -jar tools/js.jar -opt -1 tools/make-toc.js
[ Envjs/1.6 (Rhino; U; Mac OS X x86_64 10.7; en-US; rv:1.7.0.rc2) Resig/20070309 PilotFish/1.2.13 ]
real 0m16.554s
user 0m34.131s
sys 0m1.288s
かなり多くの処理が完了するまでに 16 秒かかります。また、最も遅い部分は Build TOC であることもわかりました。ほとんどの場合、約 10 秒かかります。
追加するだけで、入力ファイルは多かれ少なかれ小さなドキュメントで、サイズは 23 キロバイトです。
なぜ実行に時間がかかるのか不思議です。1秒以内に完了すると思います。
質問: ここでのパフォーマンス低下の原因は何ですか? 私が想像できるオプション: 1) Rhino 2) EnvJs 3) JQuery 4) My Script
他の実行環境の提案は非常に高く評価されます。ただし、クロスプラットフォームの開発サイクルに統合する必要があることに注意する必要があります。