• Title/Summary/Keyword: 적시 컴파일

Search Result 7, Processing Time 0.013 seconds

Expanding Code Caches for Embedded Java Systems using Client Ahead-Of-Time Compilation (내장형 자바 시스템을 위한 클라이언트 선행 컴파일 기법을 이용한 코드 캐시 확장)

  • Hong, Sung-Hyun;Kim, Jin-Chul;Shin, Jin-Woo;Kwon, Jin-Woo;Lee, Joo-Hwan;Moon, Soo-Mook
    • Journal of KIISE:Computing Practices and Letters
    • /
    • v.16 no.8
    • /
    • pp.868-872
    • /
    • 2010
  • Many embedded Java systems are equipped with limited memory, which can constrain the code cache size provided for Java just-in-time compilation, affecting the Java performance. This paper proposes expanding the limited code cache when it is full, by saving the machine code for some methods in the code cache into the file system of the permanent storage and reloading it to the code cache when they are re-invoked later. This is applying the client ahead-of-time compilation during the execution time for the purpose of enlarging the code cache. Our experimental results indicate that the proposed execution method can improve the performance by as much as 1.6 times compared to the conventional method, when the code cache size is reduced by half.

Lightweight Loop Invariant Code Motion for Java Just-In-Time Compiler on Itanium (Itanium상의 자바 적시 컴파일러를 위한 가벼운 루프 불변 코드 이동)

  • Yu Jun-Min;Choi Hyung-Kyu;Moon Soo-Mook
    • Journal of KIISE:Software and Applications
    • /
    • v.32 no.3
    • /
    • pp.215-226
    • /
    • 2005
  • Loop invariant code motion (LICM) optimization includes relatively heavy code analyses, thus being not readily applicable to Java Just-In-Time (JIT) compilation where the JIT compilation time is part of the whole running time. 'Classical' LICM optimization first analyzes the code and constructs both the def-use chains and the use-def chains. which are then used for performing code motions. This paper proposes a light-weight LICM algorithm, which requires only the def-use chains of loop invariant code (without use-def chains) by exploiting the fact that the Java virtual machine is based on a stack machine, hence generating code with simpler patterns. We also propose two techniques that allow more code motions than classical LICM techniques. First, unlike previous JIT techniques that uses LICM only in single-path loops for simplicity, we apply LICM to multi-path loops (natural loops) safely for partially redundant code. Secondly, we move loop-invariant, partially-redundant null pointer check code via predication support in Itanium. The proposed techniques were implemented in a JIT compiler for Itanium processor on ORP (Open Runtime Platform) Java virtual machine of Intel. On SPECjvrn98 benchmarks, the proposed technique increases the JIT compilation overhead by the geometric mean of 1.3%, yet it improves the total running time by the geometric mean of 2.2%.

Performance Comparison of Android Dalvik and Java Virtual Machines (안드로이드 달빅과 자바 가상머신의 성능비교)

  • Lee, Jong-Hyuk;Kim, Hyung-Shin
    • Journal of the Korea Academia-Industrial cooperation Society
    • /
    • v.12 no.1
    • /
    • pp.486-492
    • /
    • 2011
  • In this paper we analyzed performance of Andriod's Davik virtual machine(VM) using standard benchmark and compared the result with the embedded Java virtual machine. We used a well known benchmark suit named SPECJVM for the measurement. For the fair comparison, Sun Java embedded JVM is ported and the same benchmark is ported on it. The Odriod smartphone hardware platform is used as the target hardware. We have added a Just-In-Time compiler to Dalvik, which is not supported in the recent Android release, and measured performance improvement. The experiment result show that Dalvik achieved 15% and Dalvik with JIT shows 63% of the Sun's JVM performance.

Development of a High Performance Ocean Model using Julia Language (줄리아 언어를 이용한 고성능 해양모델의 개발)

  • KWON, MIN-SUN;KIM, JONG GU
    • The Sea:JOURNAL OF THE KOREAN SOCIETY OF OCEANOGRAPHY
    • /
    • v.24 no.2
    • /
    • pp.187-207
    • /
    • 2019
  • In order to develop a high performance ocean model, we used Julia, a Just-In-Time compile language, and to obtain the solution of the momentum equation, we made the code to solve the Poisson equation by the Successive Over-Relaxation method. And then we made two models to test Julia calculation codes. First, a simple channel form is modeled to test constant source/sink conditions. Second, the simplified Yellow Sea was modeled to test tidal forcing, Coriolis forces, and the effect of vertical eddy diffusivity coefficients. The model has been tested with a total of eight cases in the two scenarios. As a result of the test, the depth-averaged current speed of the three cases in Scenario 1 converged perfectly to the theoretical value, and that showed well a vertical flow velocity gradient due to the bottom friction. Also, the result of Scenario 2 represented well the amphidromic points of Yellow Sea and the tidal characteristics of mid-western and southwestern coast of Korea. Therefore, it is considered that the ocean model using Julia language has developed successfully, this suggests that the ocean model has come to the stage of successful transition from a classical compile language to a Just-In-Time compile language.

Early Null Pointer Check using Predication in Java Just-In-Time Compilation (자바 적시 컴파일에서의 조건 수행을 이용한 비어 있는 포인터의 조기검사)

  • Lee Sanggyu;Choi Hyug-Kyu;Moon Soo-Mook
    • Journal of KIISE:Software and Applications
    • /
    • v.32 no.7
    • /
    • pp.683-692
    • /
    • 2005
  • Java specification states that all accesses to an object must be checked at runtime if object refers to null. Since Java is an object-oriented language, object accesses are frequent enough to make null pointer checks affect the performance significantly. In order to reduce the performance degradation, there have been attempts to remove redundant null pointer checks. For example, in a Java environment where a just-in-time (JIT) compiler is used, the JIT compiler removes redundant null pointer check code via code analysis. This paper proposes a technique to remove additional null pointer check code that could not be removed by previous JIT compilation techniques, via early null pointer check using an architectural feature called predication. Generally, null point check code consists of two instructions: a compare and a branch. Our idea is moving the compare instruction that is usually located just before an use of an object, to the point right after the object is defined so that the total number of compare instructions is reduced. This results in reduction of dynamic and static compare instructions by 3.21$\%$ and 1.98$\%$. respectively, in SPECjvm98 bechmarks, compared to the code that has already been optimized by previous null pointer check elimination techniques. Its performance impact on an Itanium machine is an improvement of 0.32$\%$.