Ark Compiler ของ Huawei อาจปรับปรุงประสิทธิภาพของแอป Android ได้อย่างไร

Huawei ได้เปิดเผยรายละเอียดที่สำคัญเกี่ยวกับการทำงานของ Ark Compiler ใหม่ ซึ่งสัญญาว่าจะปรับปรุงประสิทธิภาพของแอปบน Android อย่างมาก อ่านต่อเพื่อดูข้อมูลเพิ่มเติม

การสนทนาล่าสุดเกี่ยวกับ Huawei ส่วนใหญ่เกี่ยวข้องกับสถานการณ์ทางการเมืองที่โชคร้ายของบริษัท เนื่องจาก คำสั่งผู้บริหารของสหรัฐฯ ที่จำกัดบริษัทหลายแห่งไม่ให้ดำเนินธุรกิจกับ Huawei. ผลสะท้อนกลับของการตัดสินใจครั้งสำคัญดังกล่าวนั้นใหญ่โตเกินกว่าที่จะไม่ใส่ใจ แต่ในความเป็นจริงทางเลือกที่ไม่มีคำสั่งผู้บริหารนี้ Huawei ก็คงเป็นจุดสนใจของมัน เพิ่งเปิดตัว Ark Compiler นวัตกรรมล่าสุดที่อ้างว่าเชื่อมช่องว่างประสิทธิภาพของแอประหว่าง Android และ ไอโอเอส

ก่อนที่จะเจาะลึกว่า Ark Compiler คืออะไร เราต้องย้อนกลับไปทำความเข้าใจก่อนว่าคอมไพเลอร์คืออะไร และมีวัตถุประสงค์อะไรในระบบ Android

ประวัติโดยย่อของคอมไพเลอร์และล่ามบน Android

คอมไพเลอร์คือโปรแกรมคอมพิวเตอร์ที่แปลโค้ดจากภาษาหนึ่งเป็นภาษาอื่น ซึ่งมักจะเป็นภาษาเครื่องดั้งเดิม จากนั้นสามารถดำเนินการได้โดยตรงจากคอมพิวเตอร์หรือดำเนินการผ่านโปรแกรมอื่น (ล่าม) การแปลนี้จำเป็นเนื่องจากเราเขียนโค้ดในภาษาโปรแกรมที่มนุษย์สามารถอ่านได้ (เช่น Java และ Kotlin) ในขณะที่คอมพิวเตอร์เข้าใจเฉพาะภาษาเครื่องดั้งเดิมเท่านั้น (รหัสไบนารี่ในรูปแบบ 1 และ 0) คอมไพเลอร์จึงทำหน้าที่เป็นสะพานเชื่อมระหว่างคำสั่งที่มนุษย์เขียนกับความสามารถของเครื่องในการทำความเข้าใจแล้วดำเนินการตามคำสั่งเหล่านั้น ความรวดเร็วและมีประสิทธิภาพในการแปลงนี้และการตีความในภายหลังเกิดขึ้นจะกำหนดประสิทธิภาพของคอมไพลเลอร์ดังนั้น แนะนำความสัมพันธ์โดยตรงระหว่างประสิทธิภาพของคอมไพเลอร์กับประสิทธิภาพและประสิทธิภาพของโค้ดและโดยการขยาย แอพ

ดาลวิค วีเอ็ม

ในช่วงแรกของ Android ระบบปฏิบัติการใช้สิ่งที่เรียกว่า Dalvik VM (ล่าม) ร่วมกับคอมไพเลอร์ JIT (ทันเวลาพอดี) วิดีโอเก่านี้จาก Android Basics 101 ของ XDA TV ซีรีส์นี้เกี่ยวข้องกับการตั้งค่า Dalvik VM และ JIT ซึ่งทั้งสองอย่างนี้ตอบสนองความต้องการของระบบ Android ยุคแรกๆ ที่ข้อจำกัดของหน่วยความจำมีมากมาย Dalvik VM ใช้โค้ดไบต์ Java และแปลงเป็นโค้ดเครื่องตามเวลาและเวลาที่โค้ดจำเป็นต้องดำเนินการ (จึงทันเวลาพอดี) นี่เป็นสิ่งจำเป็นเนื่องจากพื้นที่จัดเก็บข้อมูลในโทรศัพท์เป็นข้อจำกัดที่แท้จริงในสมัยนั้น ดังนั้นแนวทางนี้จึงทำให้แอปสามารถทำงานกับไฟล์ที่มีขนาดเล็กกว่าในระบบได้

การคอมไพล์และการตีความแอปในขณะรันไทม์มีข้อเสียเปรียบคือประสิทธิภาพโดยรวมของแอปที่ช้าลง เนื่องจากการรวบรวมจะเกิดขึ้นควบคู่ไปกับเวลาที่ผู้ใช้ใช้แอป

Dalvik ยังมีข้อจำกัดเกี่ยวกับกลไกการเก็บขยะอีกด้วย Dalvik ติดตามการจัดสรรหน่วยความจำแต่ละครั้งร่วมกัน เมื่อ Dalvik พิจารณาว่าชิ้นส่วนของหน่วยความจำไม่ได้ถูกใช้โดยโปรแกรมอีกต่อไป มันจะปล่อยหน่วยความจำนี้กลับสู่ฮีปโดยไม่มีการแทรกแซงจากโปรแกรมเมอร์ กระบวนการนี้เรียกว่า Garbage Collection (GC) และมีจุดมุ่งหมายเพื่อค้นหาวัตถุหน่วยความจำในโปรแกรมที่ไม่สามารถเข้าถึงได้อีกต่อไป จากนั้นจึงเรียกคืนทรัพยากรที่ใช้โดยวัตถุเหล่านั้นเพื่อเพิ่มหน่วยความจำ ระบบจะกำหนดเวลาว่าจำเป็นต้องใช้ GC เมื่อใดแบบกลุ่ม ดังนั้นนักพัฒนาแอปจึงไม่สามารถเลือกได้ว่าเหตุการณ์ GC จะเกิดขึ้นเมื่อใด [แม้แต่ใน ART] ดังนั้นหากเหตุการณ์ GC เกิดขึ้นในระหว่างกิจกรรมการประมวลผลที่เข้มข้นบนแอปเบื้องหน้า ระบบจะหยุดชั่วคราว การดำเนินการตามกระบวนการและเริ่ม GC ซึ่งจะเพิ่มเวลาการประมวลผลและแนะนำ "jank" ที่เห็นได้ชัดเจนให้กับ ผู้ใช้

ข้อจำกัดเหล่านี้และข้อจำกัดอื่นๆ ผลักดันให้ Google สำรวจแนวทางอื่นๆ เพื่อประสิทธิภาพที่รวดเร็วยิ่งขึ้น

รันไทม์ของ Android

Google เปิดตัวระบบปฏิบัติการ Android 4.4 KitKat ART (รันไทม์ของ Android) ในรูปแบบแสดงตัวอย่างด้วยคอมไพเลอร์ AOT (Ahead-Of-Time) และด้วย Android 5.0 Lollipop ทำให้ Google เลิก Dalvik และใช้ ART เป็นล่ามเพียงตัวเดียวที่มีอยู่ ART ด้วย AOT แปลงโค้ดเป็นภาษาเครื่อง ณ เวลาที่ติดตั้งแอป แทนที่จะรอเพื่อทำการแปลงเมื่อมีการใช้งานแอป วิธีการนี้ช่วยเร่งเวลาเปิดแอป แต่ยังนำเสนอข้อเสียในรูปแบบของเวลาการติดตั้งที่ช้าลงและการใช้พื้นที่ดิสก์ที่เพิ่มขึ้น เพื่อสร้างความสมดุลให้กับทุกสิ่ง Google นำมาใช้ การผสมผสานระหว่าง AOT, JIT และการคอมไพล์ตามโปรไฟล์ด้วย ART บน Android 7.0 Nougat เพื่อให้แน่ใจว่าไม่มีปัจจัยใดได้รับผลกระทบอย่างมาก

การใช้งาน ART ของ Android

ART ยังช่วยทำให้ Garbage Collection น่ารำคาญน้อยลง กระบวนการ GC ได้รับการปรับให้เหมาะสมเพื่อให้โดยรวมเร็วขึ้นโดยมีการหยุดชั่วคราวน้อยลง (การหยุดชั่วคราวสั้นๆ เพียงครั้งเดียวเทียบกับการหยุดชั่วคราวสองครั้งของ Dalvik) การกระจายตัวน้อยลง และใช้หน่วยความจำน้อยลง การนำเสนอของ Google ที่ Google I/O 2014 มีรายละเอียดที่ดีกว่า ซึ่งอธิบายข้อจำกัดของการปรับปรุง GC และ ART ของ Dalvik ในส่วนนั้น

แม้ว่าจะมีการเปลี่ยนแปลงเหล่านี้ในช่วงหลายปีที่ผ่านมา แต่หลักการพื้นฐานของแนวทางของ Google ก็คือการตีความโค้ดระหว่างการดำเนินการ ในขณะเดียวกันก็เปลี่ยนช่วงเวลาขององค์ประกอบการคอมไพล์ (การแปล) Garbage Collection ยังคงเป็นอุปสรรคสำหรับนักพัฒนาแอป เนื่องจากลักษณะการรบกวนและส่วนรวมโดยธรรมชาติของ Garbage Collection อาจเป็นไปได้ว่าประสิทธิภาพของแอป Android ได้รับผลกระทบเนื่องจากยังมีค่าใช้จ่ายที่เกี่ยวข้องอยู่

Ark คอมไพเลอร์โดย Huawei

Huawei ทำงานเพื่อพัฒนาโซลูชันที่มีประสิทธิภาพมากขึ้น และด้วยเหตุนี้จึงได้จ้างผู้เชี่ยวชาญหลายร้อยคนในสาขานี้ ผลลัพธ์ของความพยายามนี้คือ Ark Compiler ซึ่ง Huawei อ้างว่าเป็นคอมไพเลอร์แบบคงที่ตัวแรก ที่ช่วยให้สามารถแปลเป็นภาษาเครื่องได้โดยตรง โดยไม่จำเป็นต้องมี a อีกต่อไป ล่าม. นอกจากนี้ Ark Compiler ยังได้รับการพัฒนาโดยมีเป้าหมายในการเพิ่มประสิทธิภาพการทำงานสูงสุดสำหรับ Java และ C ดังนั้นจึงควรเห็นผลลัพธ์ที่ดีที่สุดตามทฤษฎีด้วยภาษาเหล่านี้

กราฟิกโดย Huawei แปลข้อความโดยผู้ใช้ XDA MyKeyVans

Huawei นำเสนอคุณสมบัติหลักบางประการของ Ark Compiler ดังต่อไปนี้:

  • เทคนิคการคอมไพล์เช่น AOT และ JIT สามารถแปลงบางโปรแกรมให้เป็นรหัสเครื่องและรันบน CPU ได้โดยตรง แต่เทคนิคเหล่านี้ไม่สามารถแยกตัวออกจากล่ามได้อย่างสมบูรณ์และมีข้อจำกัดที่แนบมาด้วย Ark Compiler ใช้การคอมไพล์แบบคงที่ ซึ่งช่วยให้สามารถแยกตัวเองออกจากล่ามแบบไดนามิก เปิดความเป็นไปได้ในการเพิ่มประสิทธิภาพแอปโดย "กระโดดและขอบเขต"
  • การคอมไพล์แบบคงที่อาจมีข้อเสียคือเข้มงวดเกินไป และไม่สามารถทำการปรับเปลี่ยนที่คอมไพเลอร์แบบไดนามิกสามารถทำได้ระหว่างการดำเนินการ Huawei อ้างว่าการคอมไพล์แบบคงที่ของ Ark Compiler ช่วยแก้ไขปัญหานี้ได้ "โดยการแปลคุณสมบัติไดนามิกในภาษาการเขียนโปรแกรมเป็นรหัสเครื่องได้อย่างราบรื่น"
  • กระบวนการคอมไพล์ที่มีอยู่เกิดขึ้นระหว่างหรือหลังการติดตั้งแพ็คเกจแอปบนอุปกรณ์มือถือ Ark Compiler ได้รับการออกแบบมาเพื่อการใช้งานระหว่างการพัฒนาซอฟต์แวร์ ซึ่งเราถือว่าช่วยขจัดค่าใช้จ่ายด้านเวลาระหว่างการติดตั้งและการดำเนินการ เราสันนิษฐานว่านักพัฒนาแอปจะสามารถรวบรวมภาษาต่างๆ ลงในโค้ดเครื่องเนทิฟได้โดยตรงระหว่างการใช้แอป กระบวนการพัฒนาและ APK ที่เป็นผลลัพธ์จึงไม่จำเป็นต้องโต้ตอบกับล่ามหรือเครื่องเสมือน การทำงาน. สิ่งนี้ในทางทฤษฎีจะช่วยลดค่าใช้จ่ายที่เกี่ยวข้องกับ JNI เป็นต้น
  • Ark Compiler ยังเปลี่ยนลักษณะโดยรวมของ Garbage Collection ด้วย อนุญาตให้เหตุการณ์ GC เกิดขึ้นแยกกันสำหรับเธรด Java ที่แตกต่างกัน วิธีการแบ่งส่วนนี้อ้างว่าให้ปัญหาน้อยลงในแอปเบื้องหน้า

จากการเปลี่ยนแปลงเหล่านี้ Ark Compiler สามารถทำได้ ดูเหมือนว่าจะปรับปรุงความคล่องในการใช้งานระบบ Android ได้ถึง 24% ความเร็วในการตอบสนองสูงถึง 44% และความราบรื่นของแอพพลิเคชั่นบุคคลที่สามสูงถึง 60%โดยอ้างว่าทำให้ประสิทธิภาพของแอป Android อยู่ในระดับเดียวกับบน iOS

ปัจจุบัน Ark Compiler ได้รับการคอมไพล์และปรับให้เหมาะสมสำหรับสถาปัตยกรรมชิป ARM Huawei หวังว่าในอนาคต การออกแบบฮาร์ดแวร์และซอฟต์แวร์ที่ทำงานร่วมกันจะเพิ่มขีดความสามารถของชิป Kirin ให้สูงสุด

Ark Compiler รองรับการใช้งาน Java มาตรฐาน ทำให้สามารถคอมไพล์แอพของบริษัทอื่นได้โดยตรง โดยไม่จำเป็นต้องให้นักพัฒนาแอพทำการแก้ไขโค้ดใดๆ Ark Compiler ยังอนุญาตให้ "ปรับโครงสร้างโค้ด" เพื่อปรับปรุงประสิทธิภาพและหน่วยความจำเพิ่มเติม Huawei ได้เลือกให้ Ark Compiler เป็นระบบโอเพ่นซอร์ส ซึ่งจะช่วยให้นักพัฒนาบุคคลที่สามสามารถนำไปใช้ได้ และปรับใช้เทคโนโลยีให้ตรงตามความต้องการ ขยายการยอมรับกับนักพัฒนาแอปและโทรศัพท์มือถือ ผู้ผลิต

แม้ว่า Huawei จะไม่กล่าวถึงข้อเสียใด ๆ ของ Ark Compiler แต่ก็สามารถคาดหวังขนาดแอปที่ใหญ่ได้ในท้ายที่สุด อย่างน้อยที่สุดแต่ไม่น่าจะเกิดปัญหาใด ๆ กับอุปกรณ์รุ่นปัจจุบันที่มาพร้อมกับอุปกรณ์ที่เพียงพอ พื้นที่จัดเก็บ. นอกจากนี้เรายังคาดหวังว่า Ark Compiler จะไม่สามารถใช้งานได้กับสถาปัตยกรรม CPU ทั้งหมด เนื่องจากปัญหาด้านความเข้ากันได้ของ Google ไม่ใช่ปัญหาของ Huawei Ark Compiler ได้รับการออกแบบมาเพื่อใช้ระหว่างการพัฒนาไม่ใช่ระหว่างการติดตั้ง นี่เป็นข้อบ่งชี้ว่า Huawei อาจปรับเปลี่ยนวิธีการปรับใช้และติดตั้งแอปบนอุปกรณ์ Android และอาจทำงานกับการออกแบบ APK ของตัวเองด้วย หากถูกต้อง สิ่งนี้อาจก่อให้เกิดปัญหาความเข้ากันได้ที่สำคัญในระบบนิเวศ และคงใช้เวลานานกว่าที่สิ่งนี้จะกลายเป็นคุณสมบัติมาตรฐานของ Android หากเคย

การไม่รวบรวมบนอุปกรณ์ของผู้ใช้ยังทำให้เกิดคำถามใหญ่เกี่ยวกับการเพิ่มประสิทธิภาพ ปัจจุบัน ART ได้รับการปรับให้เหมาะสมบนพื้นฐานสถาปัตยกรรมต่อไมโคร ซึ่งหมายความว่าผลลัพธ์ไบนารี่จะเป็นเช่นนั้น แตกต่างกันสำหรับอุปกรณ์ Snapdragon เทียบกับอุปกรณ์ Exynos หรือแม้แต่ Snapdragon 845 เทียบกับ Snapdragon 625. แนวทางนี้เหมาะสมสำหรับผู้ผลิตที่สามารถควบคุม SoC ได้อย่างสมบูรณ์ เช่น Apple และ Huawei อย่างไรก็ตาม ในขณะที่โลก Android ส่วนที่เหลือใช้ SoC ที่แตกต่างกัน การบังคับให้ใช้การปรับให้เหมาะสมทั่วไปกับอุปกรณ์ต่างๆ จะเป็นอุปสรรคต่อการสร้างมาตรฐานของ Ark Compiler อีกครั้ง ดังนั้นอย่าคาดหวังว่า Ark Compiler จะมาถึง ROM ที่คุณกำหนดเองที่คุณชื่นชอบในเร็วๆ นี้

เพื่อความกระจ่าง Ark Compiler ได้รับการพัฒนาให้ทำงานกับ Android และ Huawei ไม่ได้กล่าวถึงสิ่งใดที่เกี่ยวข้องกับมัน ระบบปฏิบัติการ homebrew ที่ถูกกล่าวหา และความเข้ากันได้กับ Ark Compiler ดังนั้นเราจึงไม่ตั้งสมมติฐานในเรื่องนี้

Huawei วางแผนที่จะจัดการประชุมใหญ่สองครั้งเพื่อนักพัฒนาและระบบนิเวศที่ใหญ่ขึ้นโดยเฉพาะ ได้แก่การประชุม Huawei Device China Developers Conference และ Green Alliance China Developers Conference กิจกรรมทั้งสองจะกล่าวถึงปัญหาโอเพ่นซอร์สเฉพาะที่เกี่ยวข้องกับ Ark Compiler ของ Huawei ในความพยายามที่จะทำให้ประโยชน์ของเทคโนโลยีนี้เข้าถึงได้อย่างกว้างขวางที่สุด


ขอขอบคุณเป็นพิเศษสำหรับ XDA Senior Recognized Contributor ดีส์_ทรอย และนักพัฒนาที่ได้รับการยอมรับ arter97 สำหรับความช่วยเหลือและความคิดเห็นของพวกเขา

หมายเหตุ: Huawei/Honor ได้หยุดให้รหัสปลดล็อค bootloader อย่างเป็นทางการสำหรับอุปกรณ์ของตน ดังนั้นบูตโหลดเดอร์ของอุปกรณ์จึงไม่สามารถปลดล็อคได้ ซึ่งหมายความว่าผู้ใช้ไม่สามารถรูทหรือติดตั้ง ROM แบบกำหนดเองได้