0

現在、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

他の実行環境の提案は非常に高く評価されます。ただし、クロスプラットフォームの開発サイクルに統合する必要があることに注意する必要があります。

4

1 に答える 1

0

推測してください(EnvJとコンソールrhinoでは機能しませんでした-埋め込みのみ)

「解釈」モードでは、速度が大幅に低下する可能性があります。(私のアプリでは context.setOptimizationLevel(-1) です)

jQuery のメイン メソッドが 64K の Java メソッドのサイズ制限を超えているため、これを使用する必要がありました。

rhinoには「コンパイル」モードもあります-これはより高速です。

于 2011-08-23T06:59:31.287 に答える