Google
은 Dalvik
에서 ART
(Android Runtime)으로 이동 중입니다.dexopt와 dex2at의 차이점은 무엇입니까?
성능을 향상시키는 방법을 이해하려고했습니다. dex2oat
에 dexopt
이다 변경된 주요 구성 요소의
하나 :
내가 찾은 가장 좋은 설명은 아래 이미지입니다.
저는 이것에 대해별로 생각하지 않으므로 아무도 차이점을 설명하고 이것이 성능을 어떻게 향상시킬 수 있습니까?
Google
은 Dalvik
에서 ART
(Android Runtime)으로 이동 중입니다.dexopt와 dex2at의 차이점은 무엇입니까?
성능을 향상시키는 방법을 이해하려고했습니다. dex2oat
에 dexopt
이다 변경된 주요 구성 요소의
하나 :
내가 찾은 가장 좋은 설명은 아래 이미지입니다.
저는 이것에 대해별로 생각하지 않으므로 아무도 차이점을 설명하고 이것이 성능을 어떻게 향상시킬 수 있습니까?
dexopt는 dex 파일에서 몇 가지 최적화를 수행합니다. 호출하는 메소드의 vtable 인덱스를 포함하는 최적화 된 버전으로 가상 호출 명령어를 대체하는 것과 같은 작업을 수행하므로 실행 중에 메소드 조회를 수행 할 필요가 없습니다.
dexopt의 결과는 odex (최적화 된 dex) 파일입니다. 이는 최적화 된 invoke 가상 명령어와 같은 일부 최적화 된 opcode를 사용한다는 점을 제외하고는 원본 dex 파일과 매우 유사합니다.
dex2at는 dex 파일을 받아서 컴파일합니다. 결과적으로 본질적으로 실행되는 엘프 파일입니다. 따라서 가상 머신에 의해 해석되는 바이트 코드 대신에 프로세서에서 기본적으로 실행될 수있는 원시 코드를 갖게됩니다. 이를 AOT (ahead-of-time) 컴파일이라고합니다.
두 도구는 일반적으로 at install time on the device으로 실행됩니다.
dalvik은 JIT (Just-In-Time) 컴파일러를 사용했기 때문에 바이트 코드를 원시 코드로 컴파일 할 수있었습니다. 그러나 주요 차이점은 ART가 모든 것을 사전에 컴파일하는 반면 dalvik은 가장 자주 실행 된 코드를 발견하기 위해 발견 적 방법을 사용하여 바이트 코드의 하위 집합을 컴파일하고 실행 중에 컴파일한다는 것입니다.
이 변환 된 엘프 형식의 OAT가 실행 또는 추가 컴파일 또는 최적화가 수행되는 마지막 명령어인지 여부를 알려주시겠습니까? 사실 나는 오트 변환 된 파일에 대해 몇 가지 정적 분석을 시도하고 나중에 원래 런타임 명령 추적에 지침을 매핑하려고합니다. 그리고 마지막으로 안드로이드 소스 코드에서 어떤 파일을 찾아야 할지를 명확하게 알 수 있습니까? –
예, 귀리 파일이 직접 실행됩니다. AOSP에서 예술 프로젝트를보고 싶을 것입니다. – JesusFreke
안녕하세요, 이러한 AOT 파일이 저장된 위치를 알고 계십니까? 그것은/data/dalvik-cache/prfiles 경로입니까? –
이 이미지의 출처를 공유 할 수 있습니까? – Owen
@Owen http://en.wikipedia.org/wiki/File:ART_view.png –