เนื่องจากแอปพลิเคชัน Android ทำงานบน JVM (Dalvik VM) ซึ่งโดยทั่วไปเป็นโปรเซสเซอร์เสมือนและทุกคำสั่งเสมือนต้องแมปกับคำสั่งดั้งเดิมของชิปเซ็ตพื้นฐานการทำแผนที่นี้ส่งผลให้สิ้นเปลืองพลังงานมากขึ้นเนื่องจากการทำแผนที่นี้หรือไม่
คำถามนี้สามารถขยายไปยัง Java และยังเป็นประโยคที่ว่า "แอปพลิเคชัน Java ใช้พลังงานมากขึ้นหรือไม่" นี่เป็นสาเหตุที่โทรศัพท์ Android ใช้งานแบตเตอรี่ที่น่าตกใจเมื่อเทียบกับแพลตฟอร์ม / โทรศัพท์อื่น ๆ หรือไม่?
แก้ไข : ขึ้นอยู่กับคำตอบที่ฉันชี้แจงบางประเด็นเพราะฉันพูด JVM และ Dalvik อย่างผิดพลาด ในบิตนี้ฉันกำลังพูดถึง Java เพียงเพื่อถามว่ามันใช้พลังงานมากขึ้นหรือไม่และถ้าใช่มันใช้กับแนวคิดใน Android ด้วยและจะส่งผลให้อายุการใช้งานแบตเตอรี่ลดลง
บริบท : อ้างจาก Wikipedia:
- Java bytecode คล้ายกับภาษาแอสเซมบลีสำหรับรหัส C
- จากมุมมองของคอมไพเลอร์เครื่องเสมือน Java เป็นเพียงตัวประมวลผลอื่นที่มีชุดคำสั่งคือ Java bytecode ซึ่งสามารถสร้างรหัสได้
- JVM มีสถาปัตยกรรมสแต็ก Dalvik เป็นเครื่องเสมือนกระบวนการซึ่งไม่เหมือนกับการทำเสมือนจริงแบบ JVM และมีสถาปัตยกรรมการลงทะเบียน
เนื่องจากภาษาการเขียนโปรแกรม Java ได้รับการคอมไพล์ด้วย bytecode (เหมือนแอสเซมบลี) และทำงานบนตัวประมวลผลเสมือนจึงให้การพกพารหัสซอฟต์แวร์ที่แท้จริง นอกจากนี้เนื่องจากมี JVM สำหรับ Linux และ Linux ได้รับการพอร์ตเข้ากับฮาร์ดแวร์แบบเปิดการรวมกันสามารถให้ความสะดวกในการพกพาแอปพลิเคชันที่แท้จริงในสแต็กทั้งหมด
Power : คำถามสำคัญที่ทำให้เกิดปัญหานี้ - สำหรับชุดการทำงานเดียวกันของรหัสซอฟต์แวร์หรือแอปพลิเคชันของคุณเปอร์เซ็นต์ของรอบสัญญาณนาฬิกา CPU ของคุณมีสาเหตุมาจากสภาพแวดล้อมของเวลาทำงาน นี่คือสภาวะแวดล้อมการคอมไพล์ Just-In-Time ของ JVM สมัยใหม่ซึ่งหาก bytecode ถูกคอมไพล์กับคำสั่งดั้งเดิมของชิปเซ็ตพื้นฐานดังนั้นรันไทม์ควรทำงานในระหว่างการรวบรวม jit เท่านั้น ดังนั้นจำนวนรอบสัญญาณนาฬิกาของ CPU จะถูกใช้ไปมากขึ้นในการมีสภาพแวดล้อมแบบรันไทม์ซึ่งคาดว่าจะส่งผลให้เกิดการสิ้นเปลืองพลังงาน ฉันสนใจเฉพาะด้านการใช้พลังงานเท่านั้นไม่ใช่เรื่องประสิทธิภาพเทียบกับภาษาที่พิมพ์และสร้างขึ้นแบบสแตติกและเข้าใจถึงข้อดีของ Java คำถามย่อยที่อาจเกี่ยวข้อง:
- Java Run time ใช้ libc ในการทำงานหรือไม่
- ประเด็นที่เกี่ยวกับการใช้พลังงานเหล่านี้แปลเป็น Dalvik VM และ Android หรือไม่?
- แทนที่จะพูดคุยกันเรื่องการสิ้นเปลืองพลังงานแบตเตอรี่ที่ไม่ดีของ Android โดยไม่ต้องพูดถึงหน้าจอและชิปเซ็ตไร้สาย - ให้พูดคุยว่า iPhone 5 มีแบตเตอรี่ขนาด 1440 mAH ซึ่งเล็กมากเมื่อเทียบกับโทรศัพท์ Nexus รุ่นใหม่ ขบวนความคิดทั้งหมด (Java, ตัวประมวลผลเสมือน, การทำแผนที่การเรียนการสอน, Android) เกิดขึ้นเพราะเพื่อนผู้ภักดี iphone อ้างว่านี่อาจเป็นเหตุผลสำหรับ iphone ของเขาที่มีแบตเตอรี่ที่ดีกว่า Nexus (สุดยอด) ของฉัน
ในกรณีใด ๆ ขอขอบคุณสำหรับคำตอบด้านล่าง