2009-05-20 6 views
2

javascript 파일을 변경하고 캐시를 지우고 다시로드 한 후에 알아 봤습니다. 하나의 함수는 특히 약 90ms에서 실행됩니다. 다음에 페이지를로드 할 때 40ms로 실행되고, 다음에 실행할 때 20ms로 실행됩니다.브라우저에서 자바 스크립트를 컴파일하고 캐시합니까?

IE가 내 자바 스크립트를 컴파일하고 어딘가에 컴파일 된 버전을 캐싱하는 것처럼 보입니다. SQLServer가 쿼리를 처리하는 방식과 비슷합니다.

그게 무슨 일입니까?

아무도 내가 브라우저가 자바 스크립트를 처리하는 방법에 대한 설명을 어디에서 찾을 수 있는지 알고 있습니까?

답변

7

당신은 피터 토르의 블로그 게시물 Compiled, interpreted, whateverEric Lippert's comment을 체크 아웃 할 수 있습니다 :

이 이 에게 JScript의 고전은 어떤 JScript의 클래식 프로그램을 실행하기 전에, 우리는 완전히 구문 코드를 확인한다는 점에서 컴파일 된 언어와 같은 역할을

가 생성

전체 구문 분석 트리를 생성하고 바이트 코드를 생성합니다. 그런 다음 바이트 코드 인터프리터를 통해 바이트 코드를 실행합니다. 그런 의미에서 JScript는 Java로 "컴파일 된"모든 비트입니다. 차이점은 JScript는 독점적 인 바이트 코드를 유지하거나 검사 할 수 없다는 것입니다. 또한 바이트 코드는 JVM 바이트 코드보다 훨씬 높은 수준입니다. JScript 클래식 바이트 코드 언어는 파스 트리의 선형화에 지나지 않지만 JVM 바이트 코드는 저수준 스택 머신에서 작동하도록 명확히 고안되었습니다.

게시물 및 댓글 9 월 2003하지만, 랄프 Sommerer의 On JavaScript performance in IE8 게시물에서 판단하는 것은, 그들은 기본의 JScript 엔진에서 많이 변경하지 않은 : (IE에서 사용되는 자바 스크립트 엔진 않는 한

다른 곳에서) 네이티브 코드에 대한 일종의 컴파일을 사용하면 성능면에서 항상 경쟁사에 비해 뒤떨어집니다. 그들의 Channel9 appearance에서 수집 한 것부터 바이트 코드 실행이 개선되었지만 주요 대상은 JavaScript 기본 객체 (Array, String, ...) 및 JavaScript-DOM 상호 작용이었습니다.

+0

잘 생각하고 답변을 주셔서 감사합니다. –

1

IE8에 대해 질문했지만 Google 엔진은 V8입니다. V8 작동 방식에 대한 비디오가 포함되어 있습니다. 하나는 가설을 할 수 있도록

http://code.google.com/p/v8/

+0

감사합니다. –

3

IE8은 오픈 소스 아니다; 그러나 오픈 소스 브라우저 (예 : Chromium, Firefox, Webkit)는 사용자가 말한대로 대략적으로 작동합니다. 브라우저가 아닌 JS 설정 (브라우저에서 처음 보거나 다시로드 할 때 새 소스 컴파일, 앞으로 더 빠른 실행을위한 컴파일 된 버전), IE의 자바 스크립트 접근법은 여러분이 추측 한 것과 매우 비슷해야합니다.

관련 문제