http://chineseinput.net/에서 pinyin(병음)방식으로 중국어를 변환할 수 있습니다.
변환된 중국어를 복사하여 사용하시면 됩니다.
TraceMonkey 자바스크립트 엔진에서 재귀함수의 적시 컴파일
오형석(Hyeong-Seok Oh),문수묵(Soo-Mook Moon),이성원(Seong-Won Lee) 한국정보과학회 2009 한국정보과학회 학술발표논문집 Vol.36 No.1C
최근 데스크 탑 환경에서의 RIA(rich internet application)의 출현과 내장형 환경에서의 풀 브라우징이 등장함에 따라 웹 브라우저 내에서 자바스크립트 엔진의 성능이 중요하게 되었다. 널리 사용되고 있는 웹 브라우저인 Firefox에 내장된 TraceMonkey 엔진은 성능 향상을 위해 수행 중에 자바스크립트 코드를 기계어 코드로 번역하여 실행하는 적시(Just-in-Time) 컴파일러를 채택하고 있다. 특히 TraceMonkey는 많이 수행되는 경로에 대해서만 컴파일을 하는 경로 추적(trace)방식을 사용하고 있는 데, 현재 재귀함수(recursive function)를 제대로 컴파일하지 못하고 있다. 본 논문에서는 TraceMonkey가 재귀함수를 컴파일하지 못하는 문제를 파악하고 이를 좀 더 극복하기 위한 방안을 제시하고 그 프로토타입을 구현하여 실험하였다. 그 결과를 바탕으로 재귀함수의 경로 추적 방식 컴파일의 근본적인 문제점을 분석하고 TraceMonkey에서 효율적인 재귀 함수 컴파일을 위해 필요한 방안을 제시한다.
오형석(Hyeong-Seok Oh),문수묵(Soo-Mook Moon) 한국정보과학회 2010 한국정보과학회 학술발표논문집 Vol.37 No.1C
모바일 환경에서 웹 브라우저 활용이 늘어나고 웹 페이지를 통한 다양한 서비스가 제공되면서 브라우저에서의 자바스크립트 성능이 중요한 요소가 되었다. 자바스크립트 엔진의 성능 개선을 위해 기존에 사용하던 인터프리터 대신에 머신 코드를 실행 시간에 생성하는 적시 컴파일러(JITC)가 도입되었다. 특히 모바일 환경에서 WebKit의 자바스크립트 엔진인 SquirrelFish Extreme(SFX)이 많이 사용되고 있다. 본 논문에서는 SFX의 성능 향상을 위하여 적시 컴파일러를 통해 생성된 머신 코드를 파일 시스템을 활용하여 파일에 저장하였다가 재사용하는 클라이언트 AOTC(ahead-of-time compilation) 방식을 제시하고 초기 실험 결과를 제시한다.
오형석(Hyeong-Seok Oh),문수묵(Soo-Mook Moon) 한국정보과학회 2011 정보과학회논문지 : 시스템 및 이론 Vol.38 No.3
구글의 모바일 플랫폼인 안드로이드에서는 기존의 자바 어플리케이션을 수행하기 위해 자바 클래스 파일을 덱스(dex) 파일로 변경한 뒤 달빅 가상 머신을 통해 수행한다. 달빅은 레지스터 기반의 가상머신으로 인터프리터 외에 추적(trace) 기반의 경로 컴파일 정책을 사용하여 달빅 바이트코드를 머신 코드로 번역하여 수행하는 적시 컴파일러를 탑재하였다. 본 논문에서는 달빅 가상 머신의 적시 컴파일러에서 사용하는 추적 단위를 확장하는 장기 추적 방식으로 변경하는 것을 제안한다. 이를 통해 더 많은 바이트코드 명령어를 함께 컴파일하여 컴파일 시간은 길어져도 더 좋은 머신 코드를 생성할 수 있어 하이브리드 컴파일 환경 등을 구축하는 데 유용하다. 실험을 통해 달빅 가상 머신의 성능 향상 가능성을 확인하였다. Google’s mobile platform, Android, executes Java applications by converting Java class files into Dex files and executing them on Dalvik virtual machine. Dalvik is a register-based virtual machine and it includes an interpreter and a just-in-time compiler (JITC) which employs trace-based path compilation for translating Dalvik bytecode to machine code. This paper proposes extending the trace unit for Dalvik JITC so that we can have longer traces. This allows compiling more Dalvik bytecode instructions together to generate better machine code with slightly longer compilation time, which can allow building a hybrid compilation environment. Our experimental results show the possibility of performance improvement for Dalvik virtual machine.
TraceMonkey 자바스크립트 엔진의 메소드 단위 컴파일 적용
오진석(JinSeok Oh),정원기(Won-Ki Jung),오형석(Hyeong-Seok Oh),문수묵(Soo-Mook Moon) 한국정보과학회 2011 정보과학회 컴퓨팅의 실제 논문지 Vol.17 No.5
자바스크립트는 풀 브라우징 환경이 중요해 지면서 과거보다 성능이 더욱 중요한 문제가 되었다. Mozilla의 TraceMonkey의 경우에도 자주 수행되는 핫 스팟 경로의 Trace를 기반으로 하는 Just-In-Time 컴파일러를 사용하여 이를 해결하고 있다. 그러나 실제 풀 브라우징 환경에서 사용되는 웹 어플리케이션의 경우 Trace의 단위가 되는 핫루프가 기존의 프로그램에서보다 덜 중요하다는 것이 밝혀졌다. 핫루프 외에도 루프에 포함되지 않는 핫메소드는 컴파일 되지 않고 인터프리터로 수행되어 문제가 있을 수 있다. 그렇기 때문에 Trace의 단위로 핫 메소드를 추가하는 것을 적용하였다. 기존의 Trace에 해당되던 규칙들을 적용하여 루프Trace와 메소드Trace간의 충돌이 발생하지 않도록 하였다. 그러나 Sunspider가 실제 웹의 특성을 제대로 반영하지 못해서 핫메소드의 수행시간의 비중이 크지 않아 오히려 성능이 나빠지는 문제가 발생했다. 메소드에 대해서는 기존의 Trace방식이 아닌 간단하고 새로운 방식의 최적화가 필요할 것으로 보인다. As full web browsing is more important, JavaScript performance is getting more important than in the past. Mozilla's TraceMonkey employs a Just-In-Time Compiler for improving performance of javascript. But, In real web sites, Hot-loop that is a unit of Trace is less important than in traditional program. Although hot-method is also hot-path, hot-method is not compiled but executed by interpreter. so we developed a methodbased Trace for TraceMonkey. Using a rule for existing Trace, between loop-based Trace and method-based Trace are not conflict. However, Sunspider that is used for benchmark does not represent real web environment. so hot-method is not dominant part and performance is not improved. There, the new and simple method for method-based compiler is necessary.