2011-08-14 12 views
0

오늘 Rhino로 독립 실행 형 모드에서 자바 스크립트를 실행하는 것이 좋은지 묻고 싶습니다.자바 스크립트 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 초 내에 완료 될 것으로 기대한다.

질문 : 여기서 성능 손실의 근원은 무엇입니까? 내가 상상할 수 옵션 : 1) 코뿔소 2) EnvJs 3) JQuery와 4) 내 스크립트

다른 실행 환경의 모든 제안은 매우 감사하겠습니다. 그러나 크로스 플랫폼 개발 사이클에 통합해야한다는 점에 유의해야합니다.

이 속도의 큰 손실 "해석"모드에 의해 발생할 수 있습니다 -

+0

http://nodejs.org/ Google V8을 둘러싼 래퍼이며 유혈 사태가 빠르다. – Prospero

답변

0

그냥 (단지 포함 EnvJs 및 콘솔 코뿔소와 함께 일하지 않았다) 같아요. (내 응용 프로그램에서는 context.setOptimizationLevel (-1)입니다.)

jQuery 메인 메서드가 64KB Java 메서드 크기 제한을 초과하므로이 메서드를 사용해야했습니다.

rhino에도 "컴파일 중"모드가 있습니다.