Dalvik VM กับ ART (Android Runtime): ส่งผลกระทบต่อผู้ใช้ปลายทางหรือไม่


22

ด้วย Nexus 5 (Android 4.4 KitKat), Google ได้จัดส่ง runtimes สองครั้งเพื่อเรียกใช้แอป

เลือกตัวเลือกรันไทม์ใน Android 4.4 KitKat Dalvik และ ART Runtimes ใน Android 4.4 KitKat

Dalvik & ART แตกต่างกันอย่างไรสำหรับผู้ใช้ปลายทาง? endusers จะได้รับผลกระทบจากสิ่งนี้อย่างไร มีเหตุผลใดที่ฉันควรเลือก ART runtime ใหม่หรือไม่


3
ความจริงที่คุณต้องเปิดใช้งานและค้นหาผ่านตัวเลือกสำหรับนักพัฒนาเพื่อค้นหาการตั้งค่านี้ควรเป็นคำใบ้ว่าไม่ได้มีไว้สำหรับผู้ใช้ปลายทาง
Dan Hulme

1
@DanHulme จุดดี แต่ก็ยังไม่ใช่ผู้ที่ชื่นชอบนักพัฒนาเล่นกับตัวเลือกนักพัฒนาและพวกเขายังใช้มันเพื่อจุดประสงค์ที่ไม่ใช่การพัฒนาเชิงบวกหลายครั้ง
Android Quesito

เท่าที่ประสบการณ์ของผู้ใช้เป็นจุดของคุณคุณจะสังเกตเห็นว่าพลังงานแบตเตอรี่ถูกบันทึกไว้ในระดับที่มาก ... อย่างไรก็ตามคุณจะไม่สามารถเห็นความแตกต่างของความเร็วขณะที่เปลี่ยนจาก Dalvik เป็น ART
ราหุลเรนนะ

คำตอบ:


26

Dalvik VM (Virtual Machine) เป็น Java VM เวอร์ชันของ Google (ซึ่งใช้งานแอพ) VMs ทำให้แอปแยกต่างหากและเป็นอิสระจากฮาร์ดแวร์จริงและแอปอื่น ๆ แต่เพื่อให้สามารถใช้งานได้ Dalvik จำเป็นต้องแปลงค่าที่เรียกว่า bytecode (ออกแบบมาสำหรับเครื่องเสมือน) เป็นรหัสเครื่องดั้งเดิม เพื่อลดการลงโทษประสิทธิภาพที่การแปลงรหัสไบต์เป็นรหัสพื้นเมืองกระบวนการที่เรียกว่าการรวบรวม Just-In-Time (JIT) จะดำเนินการซึ่งแปลงร้อนเช่นมักจะใช้ bytecode เป็นรหัสพื้นเมือง 1

ART (Android Runtime) เป็นการแทนที่สำหรับ Dalvik ที่ใช้การคอมไพล์แบบ Ahead-Of-Time (AOT) ซึ่งหมายความว่าแอพของคุณจะถูกคอมไพล์ไปยังสถานะพร้อมใช้งานก่อนที่คุณจะเปิดใช้งาน โดยปกติจะทำเมื่อติดตั้งแอพทำให้กระบวนการเปิดใช้และใช้งานได้เร็วขึ้นและราบรื่นขึ้น และเนื่องจากนี่หมายความว่าการรวบรวมจะทำได้เพียงครั้งเดียวคุณจึงอาจดูอายุการใช้งานแบตเตอรี่ที่ดีขึ้นเช่นกัน

หาก ART ดีกว่าในแง่ของประสิทธิภาพและมุมมองอายุการใช้งานแบตเตอรี่ฉันควรเริ่มใช้หรือไม่

ไม่หากคุณทำเช่นนั้นคุณอาจแบ่งแอปของบุคคลที่สามออก Google ได้จัดส่งหน้าตัวอย่าง ART นี้พร้อมกับ Android 4.4 เพื่อให้นักพัฒนาทดสอบแอพของตน

หมายเหตุด้านข้าง:แนวทางของ Google กับ ART คือการเอาชนะ iOS (แอป iOS เป็นแบบดั้งเดิมดังนั้นทำงานได้ดีขึ้นแม้ในสเปคฮาร์ดแวร์ต่ำสุด) แต่ฉันไม่รู้ว่ามันกำลังมุ่งหน้าไปที่ใด ... ดูOEM มีอิสระในการสร้างอุปกรณ์โดยใช้หนึ่งหรือทั้งสองอย่าง ในขณะที่รุ่นสุดท้ายไม่ควรส่งผลกระทบต่อแอพส่วนใหญ่ แต่สิ่งที่ไม่ข้ามแพลตฟอร์ม 100%

1โปรดทราบว่าเพิ่ม JIT ใน Dalvik ใน Android 2.2


3
บางทีข้อเท็จจริงสองประการน่าสังเกต: AOT ของ ART ส่งผลให้แอปพลิเคชันใช้พื้นที่เก็บข้อมูลเพิ่มขึ้น 20 ..25% เมื่อเทียบกับ DEX บวกกับการทดสอบใน Nexus-5 ที่ฉันได้อ่านแล้วไม่ได้แสดงความแตกต่างในเรื่องความเร็วหรือความอดทนของแบตเตอรี่ ทั้งสองอย่างจะปรับปรุงโดยพิจารณา ART ใน KitKat เป็นเพียงตัวอย่างของนักพัฒนาและตรวจสอบความเข้ากันได้ (เช่น WhatsApp ล้มเหลว) ดังนั้นฉันจึงสรุปข้อสองของ Sachin: ยังไม่ดีสำหรับผู้ใช้ปลายทาง
Izzy

2
คำตอบที่ยอดเยี่ยม ฉันใช้เสรีภาพในการปรับปรุงเล็กน้อย แต่ฉันไม่เห็นด้วยกับย่อหน้าสุดท้าย: ART ไม่เพิ่มการแตกแฟรกเมนต์: หาก ART ถือว่าพร้อมใช้งานแล้วมันไม่สำคัญว่าแอพของคุณจะทำงานโดย Dalvik หรือ ART ทั้งคู่ใช้รูปแบบ. dex เดียวกันเป็นจุดเริ่มต้น มีเพียง ART เท่านั้นที่ AOT รวบรวม. dex ให้เป็นรหัสเนทีฟ
Flow
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.