Nói chung, trình mô phỏng chậm hơn nhiều so với thiết bị ở các tác vụ CPU và GPU. Đó là ít nhất hai lý do:
- Các giả lập đang chạy opcodes ARM, chuyển đổi chúng thành lệnh x86 tương đương, mà là chậm
- Devices (thường) có tăng tốc đồ họa, trong khi môi trường mô phỏng không, mặc dù bất cứ điều gì thẻ video bạn có trên máy đang chạy trình mô phỏng
Để đưa mọi thứ vào góc nhìn, tôi làm Android của mình hoạt động trên Intel quad-core 2.66GHz với một card đồ họa khá đẹp. Đối với những video hoạt động tốt trên các thiết bị, tôi có thể đôi khi khiến chúng phát lại trong trình giả lập.
Trình mô phỏng nhanh hơn thiết bị, mặc dù tại I/O "đĩa". Khi bạn ghi vào "flash" trên trình mô phỏng, bạn đang ghi vào một tệp hình ảnh đĩa có thể nằm trên ổ đĩa cứng thông thường, giả sử bạn không sử dụng ổ SSD. Trên thực tế, việc viết flash trên một thiết bị có thể chậm hơn rất nhiều - Brad Fitzpatrick, tại hội nghị Google I | O 2010 tuần trước, đã trích dẫn các cú sốc lên tới 200ms để ghi một byte đơn lên flash. Và, sự kết hợp giữa Android, flash và hệ thống tập tin yaffs2 dường như làm cho thiết bị phát triển chậm hơn ở flash I/O khi flash đầy. Do đó, đề xuất của anh là làm mọi flash ghi trong chuỗi nền thay vì chuỗi ứng dụng chính, nơi nó có thể kết nối giao diện người dùng và dẫn đến ứng dụng "janky".
(rõ ràng, "janky" là một thuật ngữ kỹ thuật ... :-)
BTW, khi nó xuất hiện trên mạng, chắc chắn xem bài thuyết trình của Brad trên YouTube. Nó có thể là một chút khó khăn để làm theo ở lần, bởi vì ông đã nói rất nhanh, nhưng nó có đầy đủ các mẩu tin hữu ích liên quan đến hiệu suất.
Cảm ơn, đó là thông tin hữu ích. Trên cùng một vấn đề, giả lập có sử dụng cùng một máy ảo như một thiết bị không? Cụ thể, tôi có nên mong đợi hoạt động GC tương tự không? – uj2
Nếu bằng "VM", bạn có nghĩa là máy ảo Dalvik để chạy các ứng dụng được viết bằng Java, sau đó có. Xét về hoạt động GC, nguồn duy nhất của sự khác biệt tiềm năng là trong kích thước tối đa của ứng dụng heap. Các thiết bị cũ hơn, và tôi nghĩ giả lập, giới hạn bạn thành một vùng lưu trữ 16MB. Các thiết bị mới hơn có nhiều RAM hơn và màn hình lớn hơn hỗ trợ dung lượng 24MB. Nó không rõ ràng nếu có một cách để kiểm soát kích thước heap ứng dụng trong trình mô phỏng. Bạn có thể muốn thử nghiệm của bạn trên kích thước heap nhỏ hơn, anyway. – CommonsWare
Tôi đã gặp vấn đề thời gian chạy với mã trên trình giả lập, một tabactivity mất 8-10 giây để tải trên trình giả lập, trên thiết bị thực mất 1-2 giây, hầu như không thể nhìn thấy lag. – Pentium10