Do các ứng dụng Android chạy trên JVM (Dalvik VM) về cơ bản là bộ xử lý ảo và mọi hướng dẫn ảo phải được ánh xạ tới hướng dẫn gốc của chipset bên dưới, ánh xạ này có dẫn đến tiêu thụ nhiều năng lượng hơn do chi phí của ánh xạ này không?
Câu hỏi này có thể được mở rộng sang Java và cũng được đặt ra là "các ứng dụng Java có sử dụng nhiều năng lượng hơn không?". Đây có phải là lý do tại sao điện thoại Android có tuổi thọ pin khủng như vậy so với các nền tảng / điện thoại khác?
Chỉnh sửa : Dựa trên các câu trả lời tôi đã làm rõ một vài điểm vì tôi đã nói sai về JVM và Dalvik thay thế cho nhau. Trong phần này, tôi chỉ nói về Java để hỏi liệu nó có sử dụng nhiều năng lượng hơn không và nếu có, điều đó có áp dụng về mặt khái niệm cho Android hay không và điều đó có làm giảm tuổi thọ pin.
Bối cảnh : trích dẫn từ Wikipedia:
- Mã byte Java tương tự như ngôn ngữ lắp ráp cho mã C.
- Từ quan điểm của một trình biên dịch, máy ảo Java chỉ là một bộ xử lý khác với một tập lệnh, mã byte Java, cho mã nào có thể được tạo.
- JVM có kiến trúc ngăn xếp. Dalvik là một máy ảo quy trình không phải là loại ảo hóa giống như JVM và có kiến trúc đăng ký.
Do ngôn ngữ lập trình Java được biên dịch thành mã byte (giống như lắp ráp) và nó chạy trên bộ xử lý ảo, nên nó cung cấp tính di động mã phần mềm thực sự. Ngoài ra, vì có một JVM cho Linux và Linux đã được chuyển sang phần cứng mở, sự kết hợp này có thể cung cấp tính di động ứng dụng thực sự trên toàn bộ ngăn xếp.
Sức mạnh : Câu hỏi chủ yếu tập trung vào vấn đề này - với cùng một bộ chức năng của mã phần mềm hoặc ứng dụng của bạn, bao nhiêu phần trăm chu kỳ xung nhịp CPU của bạn được quy cho môi trường thời gian chạy. Điều này là với môi trường biên dịch đúng lúc của các JVM hiện đại trong đó nếu mã byte được biên dịch theo hướng dẫn gốc của chipset bên dưới, thì thời gian chạy chỉ nên hoạt động trong quá trình biên dịch jit. Vì vậy, bao nhiêu chu kỳ xung nhịp CPU được sử dụng hết trong môi trường thời gian chạy dự kiến sẽ dẫn đến chi phí tiêu thụ điện năng. Tôi chỉ quan tâm đến khía cạnh tiêu thụ năng lượng, chứ không phải hiệu suất tương đối so với các ngôn ngữ được gõ và xây dựng tĩnh và hiểu các lợi thế của Java. Câu hỏi phụ có thể liên quan:
- Thời gian chạy Java có sử dụng libc cho chức năng của nó không?
- Có bất kỳ điểm nào trong số các điểm liên quan đến mức tiêu thụ năng lượng này chuyển sang Dalvik VM và Android không?
- Thay vì khái quát mức tiêu thụ pin kém của Android mà không nói về màn hình và chipset không dây - hãy nói về cách iPhone 5 có pin 1440 mAH nhỏ so với điện thoại Nexus hiện đại. Toàn bộ suy nghĩ này (Java, Bộ xử lý ảo, ánh xạ hướng dẫn, Android) nảy sinh do một người bạn trung thành với iphone tuyên bố đây có thể là lý do khiến iphone của anh ta có thời lượng pin tốt hơn so với nexus (tuyệt vời) của tôi.
Trong mọi trường hợp, cảm ơn câu trả lời dưới đây.