2011-08-14 63 views
0

想知道今天是否有可能在Rhino獨立模式下運行javascript。Javascript Rhino + JQuery簡單腳本性能問題

我有一個運行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)EnvJs 3)的JQuery 4)我的腳本

其他執行環境的任何建議,將相當理解。但需要注意的是,它需要被整合到跨平臺的開發週期中。

+0

查看http://nodejs.org/這是圍繞谷歌V8的包裝和血腥快速。 – Prospero

回答

0

只是猜測(不與EnvJs和控制檯犀牛工作 - 僅嵌入式)

速度的巨大損失可以通過「解釋」模式造成的。 (它是我的應用程序中的context.setOptimizationLevel(-1))

我不得不使用它作爲jQuery主方法超過64K Java方法大小限制。

犀牛也有「編譯」模式 - 這是更快。