Javascript Rhino + JQuery简单脚本性能问题

Javascript Rhino + JQuery simple script performance issue

本文关键字:脚本 性能 问题 简单 JQuery Rhino Javascript      更新时间:2023-09-26

想问一下今天是否有可能在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秒才能完成相当多的处理。我还发现最慢的部分是Build TOC -它需要大约10秒的时间。

刚才添加的输入文件或多或少是小文档23千字节大小。

我想知道为什么跑这么长时间。我希望它能在一秒钟内完成。

问题:这里性能损失的来源是什么?我能想到的选项有:1)犀牛2) EnvJs3) JQuery4) My Script

任何其他执行环境的建议将是非常感激的。但需要注意的是,它需要集成到跨平台的开发周期中。

猜猜看(不支持EnvJs和console rhino -仅嵌入)

"解释"模式会造成很大的速度损失。(它是context.setOptimizationLevel(-1)在我的应用程序)

我不得不使用它作为jQuery的主方法超过了64K Java方法的大小限制。

rhino也有"编译"模式,这样更快。