Array Bound Checking
배열 요소에 액세스 할 때마다 Java 가상 머신은 비교 명령을 실행하여 인덱스 값이 유효한 범위 내에 있는지 확인합니다.
이것은 Java 프로그램의 실행 속도를 줄입니다.
배열 범위 검사 제거는 이러한 검사가 중복되어 제거 될 수있는 상황을 식별합니다. JIT (Just-In-Time) 컴파일러의 정적 분석을 기반으로 Java HotSpot ™ VM에 대한 배열 범위 검사 제거 알고리즘을 제시합니다.
이 알고리즘은 정적 단일 할당 형식의 중간 표현에서 작동하며 인덱스 표현식의 조건을 유지합니다.
절대 실패하지 않는 것으로 입증 될 수있는 경우 경계 검사를 완전히 제거합니다.
가능할 때마다 경계 검사를 루프 밖으로 이동합니다. 정적 검사 수는 동일하게 유지되지만 루프 내부 검사는 더 자주 실행될 수 있습니다. 이러한 점검이 실패하면, 실행 프로그램은 해석 모드로 되돌아 가서 잘못된 위치에서 예외가 발생하는 문제점을 피합니다.
이 평가는 과학적인 SciMark 벤치 마크 제품군의 이론적 최대치에 근접한 속도 향상 (평균 40 %)을 보여줍니다. 이 알고리즘은 또한 SPECjvm98 벤치 마크 제품군의 실행 속도를 향상시킵니다 (평균 2 %, 최대 12 %).
This article is licensed under CC BY 4.0 by the author.