Huawei는 새로운 Ark Compiler 작업과 관련된 주요 세부 정보를 공개하여 Android에서 앱 성능을 대폭 향상할 것을 약속했습니다. 자세한 내용은 계속 읽어보세요
최근 화웨이에 관한 대화의 대부분은 회사의 불행한 정치적 상황을 중심으로 이루어졌습니다. 많은 기업이 화웨이와 거래하는 것을 제한하는 미국 행정 명령. 그러한 중추적 결정의 영향은 너무 커서 주의를 기울이지 않을 수 없습니다. 그러나 이 행정명령이 존재하지 않는 또 다른 현실에서는 화웨이가 각광을 받았을 것입니다. 최근 Android와 Android 간의 앱 성능 격차를 해소한다고 주장하는 최신 혁신 기술인 Ark Compiler가 공개되었습니다. iOS.
Ark Compiler가 무엇인지 알아보기 전에 한발 물러서서 컴파일러가 무엇인지, 그리고 Android 시스템에서 컴파일러가 제공하는 목적을 이해해야 합니다.
Android의 컴파일러 및 인터프리터의 간략한 역사
컴파일러는 한 언어의 코드를 다른 언어(종종 기본 기계어)로 번역하는 컴퓨터 프로그램입니다. 그런 다음 컴퓨터에서 직접 실행하거나 다른 프로그램(인터프리터)을 통해 실행할 수 있습니다. 인간이 읽을 수 있는 프로그래밍 언어(예: Java 및 Kotlin), 컴퓨터는 기본 기계어(1과 2의 형태로 된 바이너리 코드)만 이해합니다. 0). 따라서 컴파일러는 인간이 작성하는 명령어와 해당 명령어를 이해하고 실행하는 기계의 능력 사이의 다리 역할을 합니다. 이 변환과 후속 해석이 얼마나 빠르고 효율적으로 수행되는지에 따라 컴파일러의 효율성이 정의됩니다. 컴파일러의 효율성과 코드의 성능 및 효율성 사이의 직접적인 상관관계를 소개하고, 더 나아가, 앱.
달빅 VM
Android 초기에 OS는 JIT(Just-In-Time) 컴파일러와 함께 Dalvik VM(인프리터)이라는 것을 활용했습니다. XDA TV의 Android 기본 사항 101의 이전 동영상입니다. 시리즈에서는 메모리 제약이 많은 초기 Android 시스템의 요구 사항을 충족하는 Dalvik VM 및 JIT 설정을 다룹니다. Dalvik VM은 Java 바이트코드를 가져와서 코드가 실행되어야 할 때(따라서 Just-In-Time) 기계어 코드로 변환했습니다. 당시에는 휴대폰의 저장 공간이 실제로 제약이 되었기 때문에 이는 필요했기 때문에 이 접근 방식을 통해 앱은 시스템에서 더 작은 파일 크기로 작동할 수 있었습니다.
런타임에 앱을 컴파일하고 해석하면 사용자가 앱을 사용할 때 컴파일이 함께 진행되므로 전반적인 앱 성능이 느려지는 단점이 있었습니다.
Dalvik의 가비지 수집 메커니즘에도 한계가 있었습니다. Dalvik은 각 메모리 할당을 집합적으로 추적했습니다. Dalvik은 프로그램에서 메모리 일부를 더 이상 사용하지 않는다고 판단하면 프로그래머의 개입 없이 이 메모리를 다시 힙으로 해제합니다. 이 프로세스를 GC(가비지 수집)라고 하며 더 이상 액세스되지 않는 프로그램에서 메모리 개체를 찾은 다음 해당 개체에서 사용하는 리소스를 회수하여 메모리를 확보하는 것을 목표로 합니다. 시스템은 GC가 필요한 시기를 집단적으로 결정하므로 앱 개발자는 [ART에서도] GC 이벤트가 발생하는 시기를 선택할 수 없습니다. 따라서 포그라운드 앱에서 집중적인 처리 활동 중에 GC 이벤트가 발생하면 시스템이 일시 중지됩니다. 프로세스를 실행하고 GC를 시작하면 처리 시간이 늘어나고 눈에 띄는 "버벅거림"이 발생합니다. 사용자.
이러한 제약과 기타 제약으로 인해 Google은 더 빠른 성능을 위한 대체 접근 방식을 모색하게 되었습니다.
안드로이드 런타임
Google은 Android 4.4 KitKat을 통해 ART(안드로이드 런타임) AOT(Ahead-Of-Time) 컴파일러와 Android 5.0 Lollipop을 사용하는 미리보기 형식에서 Google은 사용 가능한 유일한 인터프리터로 Dalvik을 제외하고 ART를 선호했습니다. AOT가 포함된 ART는 앱이 사용 중일 때 이러한 변환이 수행되기를 기다리지 않고 앱 설치 시 코드를 기계어로 변환합니다. 따라서 이 접근 방식은 앱 실행 시간을 단축했지만 설치 시간이 느려지고 디스크 공간 사용량이 늘어나는 단점도 발생했습니다. 균형을 맞추기 위해 Google은 채택 된 AOT, JIT 및 Android 7.0 Nougat의 ART와 프로필 기반 컴파일을 결합하여 단일 요소가 크게 영향을 받지 않도록 합니다.
ART는 또한 가비지 컬렉션을 덜 눈에 띄게 만드는 작업도 수행했습니다. GC 프로세스는 더 적은 일시 중지(Dalvik의 두 번의 일시 중지에 비해 단일 짧은 일시 중지), 조각화 및 메모리 사용량을 줄여 전체적으로 더 빠르게 최적화되었습니다. Google I/O 2014에서 Google이 발표한 프레젠테이션에서는 Dalvik GC의 한계와 이에 대한 ART의 개선 사항을 더 자세히 설명하고 있습니다.
수년에 걸친 이러한 변화에도 불구하고 Google 접근 방식의 기본 전제는 컴파일(번역) 요소의 타이밍을 변경하면서 실행 중에 코드를 해석하는 것이었습니다. 가비지 수집은 본질적으로 방해가 되고 집단적인 특성으로 인해 앱 개발자에게 계속해서 어려움을 겪고 있습니다. 틀림없이 Android의 앱 성능은 계속해서 오버헤드가 발생하기 때문에 저하됩니다.
Huawei의 Ark 컴파일러
화웨이는 보다 효율적인 솔루션을 개발하기 위해 노력해 왔으며 그 결과 해당 분야의 전문가 수백 명을 고용했습니다. 이러한 노력의 결과는 Huawei가 주장하는 최초의 정적 컴파일러인 Ark Compiler입니다. 기계어로 직접 번역할 수 있어 번역이 필요하지 않습니다. 통역사. Ark Compiler 역시 Java와 C의 실행 효율성을 극대화하는 것을 목표로 개발되었으므로 이론적으로 이러한 언어에서 최상의 결과를 볼 수 있습니다.
Huawei는 다음과 같이 Ark Compiler의 몇 가지 주요 기능을 제공합니다.
- AOT 및 JIT와 같은 컴파일 기술은 일부 프로그램을 기계어 코드로 변환하여 CPU에서 직접 실행할 수 있습니다. 그러나 이러한 기술은 해석기 및 그에 따른 제한 사항으로부터 완전히 벗어날 수 없습니다. Ark 컴파일러는 정적 컴파일을 활용하여 동적 인터프리터와의 연결을 끊고 "도약과 경계."
- 정적 컴파일에는 너무 엄격하고 실행 중에 동적 컴파일러가 수행할 수 있는 조정을 수행할 수 없다는 잠재적인 단점이 있습니다. Huawei는 Ark Compiler의 정적 컴파일을 통해 이 문제가 해결되었다고 주장합니다.프로그래밍 언어의 동적 기능을 기계어 코드로 원활하게 변환합니다."
- 기존 컴파일 프로세스는 모바일 장치에 앱 패키지를 설치하는 동안이나 설치 후에 발생합니다. Ark Compiler는 소프트웨어 개발 중 배포를 위해 설계되었으며, 이는 설치 및 실행 중 시간 오버헤드를 제거하는 데 도움이 될 것으로 추정됩니다. 우리는 앱 개발자가 앱을 실행하는 동안 다양한 언어를 기본 기계 코드로 직접 컴파일할 수 있다고 가정합니다. 개발 프로세스 및 결과 APK는 통역사 또는 가상 머신과의 상호 작용이 필요하지 않습니다. 기능. 예를 들어 이는 이론적으로 JNI와 관련된 오버헤드를 줄여줍니다.
- Ark Compiler는 또한 Garbage Collection의 집단적 성격을 변경합니다. 이를 통해 다양한 Java 스레드에 대해 GC 이벤트가 별도로 발생할 수 있습니다. 이 구획화된 접근 방식은 포그라운드 앱에서 버벅거림을 덜 제공한다고 주장합니다.
이러한 변경으로 인해 Ark Compiler는 다음을 수행할 수 있습니다. Android 시스템 작동 유창성은 최대 24%, 응답 속도는 최대 44%, 타사 애플리케이션의 부드러움은 최대 60% 향상되는 것으로 보입니다., Android 앱 성능을 iOS와 동일한 수준으로 가져오겠다고 주장합니다.
Ark 컴파일러는 현재 ARM 칩 아키텍처에 맞게 컴파일되고 최적화되어 있습니다. 화웨이는 미래에는 하드웨어와 소프트웨어의 협업 설계를 통해 Kirin 칩 성능을 극대화할 수 있기를 바라고 있습니다.
Ark 컴파일러는 표준 Java 사용을 지원하므로 앱 개발자가 코드를 수정할 필요 없이 타사 앱을 직접 컴파일할 수 있습니다. Ark Compiler는 또한 성능과 메모리를 더욱 향상시키기 위해 "코드 구조 조정"을 허용합니다. Huawei는 Ark Compiler를 제3자 개발자가 채택할 수 있는 오픈 소스 시스템으로 만들기로 결정했습니다. 필요에 맞게 기술을 조정하고 앱 개발자와 휴대폰의 채택을 확대합니다. 제조업 자.
Huawei는 Ark Compiler에 대한 어떠한 단점도 언급하지 않았지만, 매우 큰 앱 크기를 기대할 수 있습니다. 최소한, 그러나 이는 충분한 용량이 제공되는 현재 세대 장치에서는 아무런 문제도 일으키지 않습니다. 저장. 또한 Google의 호환성 문제는 Huawei의 골칫거리가 아니기 때문에 모든 CPU 아키텍처에서 Ark Compiler를 사용할 수 없을 것으로 예상됩니다. Ark Compiler는 설치가 아닌 개발 중에 사용하도록 설계되었습니다. 이는 Huawei가 Android 기기에 앱을 배포하고 설치하는 방식을 수정했을 수 있으며 자체 APK 설계에서도 작동했을 수 있음을 나타냅니다. 맞다면 이는 생태계에 주요 호환성 문제를 일으킬 수 있으며, 이것이 표준 Android 기능이 되려면 오랜 시간이 걸릴 것입니다.
사용자의 장치에서 컴파일하지 않는 것도 최적화에 대한 큰 의문을 제기합니다. ART는 현재 마이크로 아키텍처별로 최적화됩니다. 즉, 결과 바이너리는 다음과 같습니다. Snapdragon 장치와 Exynos 장치, 심지어 Snapdragon 845와 Snapdragon의 경우에도 다릅니다. 625. 이 접근 방식은 Apple 및 Huawei와 같이 SoC를 완전히 제어할 수 있는 제조업체에 적합합니다. 그러나 나머지 Android 세계에서는 다양한 SoC를 사용하므로 여러 장치에 걸쳐 일반 최적화를 강제로 사용하는 것은 Ark 컴파일러 표준화의 장애물이 될 것입니다. 결과적으로 Ark Compiler가 여러분이 가장 좋아하는 사용자 정의 ROM에 곧 도착할 것이라고 기대하지 마십시오.
명확히 하자면, Ark Compiler는 Android에서 작동하도록 개발되었으며 Huawei는 Android와 관련하여 아무 언급도 하지 않았습니다. 홈브류 OS 주장 Ark Compiler와의 호환성이 있으므로 이에 대해 어떠한 추정도 하지 않습니다.
화웨이는 개발자와 더 큰 생태계를 주제로 두 개의 주요 컨퍼런스를 개최할 계획입니다. 화웨이 디바이스 중국 개발자 컨퍼런스(Huawei Device China Developers Conference)와 그린 얼라이언스 중국 개발자 컨퍼런스(Green Alliance China Developers Conference)가 바로 그것입니다. 두 이벤트 모두 Huawei의 Ark Compiler와 관련된 특정 오픈 소스 문제를 다루며, 이 기술의 이점을 최대한 널리 활용할 수 있도록 노력할 것입니다.
XDA 수석 인정 기여자에게 특별히 감사드립니다. 디즈_트로이 그리고 인정받는 개발자 arter97 그들의 도움과 의견을 위해.
참고: Huawei/Honor는 해당 장치에 대한 공식 부트로더 잠금 해제 코드 제공을 중단했습니다. 따라서 장치의 부트로더를 잠금 해제할 수 없습니다. 즉, 사용자는 사용자 정의 ROM을 루팅하거나 설치할 수 없습니다.