想知道今天是否有可能在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的脚本的略微修改版本。
我使用以下命令在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秒。 我还发现最慢的部分是构建TOC - 大部分时间大约需要10秒。
只是添加输入文件或多或少的小文件大小为23千字节。
我想知道为什么要跑这么久。我希望它能在不到一秒的时间内完成。
问题:这里的性能损失来源是什么? 我能想象的选项: 1)犀牛 2)环境 3)JQuery 4)我的剧本
非常感谢任何其他执行环境的建议。但需要注意的是,它需要集成到跨平台开发周期中。
答案 0 :(得分:0)
猜测(没有使用EnvJs和控制台犀牛 - 只有嵌入式)
“解释”模式可能导致速度大幅下降。 (在我的应用程序中是context.setOptimizationLevel(-1))
我不得不使用它作为jQuery主方法超过64K Java方法大小限制。
rhino也有“编译”模式 - 速度更快。