2009-07-20 8 views
29

Sự biện minh mà tôi đã thấy cho chúng ta sẽ nói "Khống chế" các bytecode Java trong Android là hiệu suất. (Tôi nghi ngờ có một lý do khác.) Tuy nhiên bằng cách thay đổi các mã byte họ đã không thực hiện công nghệ tăng tốc phần cứng như Jazelle moot, và do đó thực sự làm suy thoái hiệu suất có sẵn cho một nền tảng Java di động?Android có sử dụng công nghệ Jazelle của ARM không?

Dường như việc truy cập trực quan với tôi biết rằng nền tảng đích là nền tảng di động dựa trên ARM. Trong khi nó MIGHT cho bạn hiệu suất tốt hơn trên các kiến ​​trúc CPU khác, nó dường như nhổ vào mặt ARM và Jazelle.

Loại hiệu ứng định lượng nào có trên hiệu suất Java?

Ứng dụng có thực sự cải thiện hiệu suất không và nếu có thì làm cách nào?

Hiệu ứng trên nền tảng khác là gì? (Ví dụ x86, mips, yadda, yadda, yadda ...)

+3

+1. Tôi không thấy làm thế nào điều này không liên quan đến lập trình. –

+2

Jazelle hầu hết đã biến mất. Một số lõi chỉ thực hiện nhập/thoát/không xác định-lệnh-trap, và dựa vào một thư viện để thực hiện toàn bộ điều, đó là chậm hơn so với chỉ làm nó trong phần mềm. – rsaxvc

Trả lời

16

Có Dalvik khiến Jazelle vô dụng. Câu hỏi duy nhất là Jazelle hữu ích để bắt đầu với hoặc là nó cường điệu tiếp thị 90%? Trình biên dịch JIT hoặc AOT (trước thời hạn) tốt có xu hướng mang lại hiệu suất tốt hơn nhiều so với cố gắng sử dụng các hướng dẫn chuyên biệt. Cách tiếp cận dựa trên đăng ký của Dalvik có thể nhanh hơn một trình thông dịch java bytecode truyền thống nhưng nếu khác biệt nhỏ giữa thông dịch viên và của JIT. Hy vọng rằng một trong những phiên bản tiếp theo của Android có JIT.

Mất ~ 5-10 năm để viết một máy ảo tốt với các nhà sưu tập và tối ưu hóa rác hiện đại. Sun (và Microsoft) đã dành những năm đó. Google chưa có. Hy vọng rằng họ sẽ tiếp tục đầu tư vào nó để một ngày Java mã Java không phải là một chậm hơn 90% so với nó phải được.

+0

Tôi không biết hướng dẫn của Jazelle là tốt, nhưng khái niệm khi áp dụng cho Bytecodes có vẻ hợp lý. Bởi vì bytecode chỉ là một mã máy cho một bộ xử lý "Thần thoại". Có vấn đề về hiệu năng với Jazelle không? Tôi có thể mua trước thời gian biên dịch được hiệu quả, bởi vì đó là không có khác nhau sau đó nói rằng bytecode là đại diện trung gian. Đó là khái niệm chính xác giống như một trình biên dịch bình thường. Và trong khi áp dụng tương tự cho JIT, nó yêu cầu sử dụng các chu kỳ bổ sung để làm điều đó trong khi bạn đang chạy mã. – NoMoreZealots

+0

Mục đích của tôi không phải là tranh chấp câu trả lời của bạn, chỉ để có thêm thông tin. – NoMoreZealots

+4

Jazelle hoạt động tốt (2-4x so với bytecode bình thường) nhưng nó vẫn còn 2-4x + chậm hơn so với JIT. Nếu bạn đọc các bài báo Sun HotSpot, bạn có thể thấy các tối ưu hóa (các chức năng nội tuyến, loại bỏ phí gọi trên mạng ảo, loại bỏ sự cần thiết phải đồng bộ hóa, tránh phân bổ đối tượng, ..) mà JIT hiện đại có thể thực hiện bằng cách thực hiện phân tích luồng mã. Jazelle không thể làm gì trong số họ. Jazelles không tệ nhưng nếu bạn có sự lựa chọn giữa 386, 486 và lõi 2, tôi muốn lõi 2. – hacken

4

Wikipedia: Dalvik virtual machine:

Không giống như hầu hết các máy ảo và thật Java VM được máy ngăn xếp, các Dalvik VM là một kiến ​​trúc đăng ký trụ sở.

Được tối ưu hóa cho các yêu cầu bộ nhớ thấp, Dalvik có một số đặc điểm cụ thể mà phân biệt nó từ máy ảo tiêu chuẩn khác:

  • Các VM đã được rút gọn xuống để sử dụng ít không gian.
  • Dalvik không có trình biên dịch kịp thời.
  • Nhóm không đổi đã được sửa đổi để chỉ sử dụng các chỉ mục 32 bit để đơn giản hóa trình thông dịch.
  • Nó sử dụng bytecode của riêng nó, không phải bytecode Java.

Hơn nữa, Dalvik được thiết kế sao cho thiết bị có thể chạy nhiều phiên bản của VM một cách hiệu quả.

Chỉnh sửa: Xem Wikipedia: Open Handset Alliance. Thành viên sáng lập bao gồm Intel, Motorola, Qualcomm và Texas Instruments. ARM đã tham gia một năm sau vào tháng 12 năm 2008. Vì vậy, tôi đoán nó không có ý nghĩa cho các công ty này dựa vào một công nghệ độc quyền bởi sau đó không phải thành viên, khi mục tiêu là tạo ra đối thủ cạnh tranh iPhone/Blackberry.

+0

Tôi nhận được điều đó để thực hiện phần mềm thuần túy, nhưng Jazelle thêm một biến khác vào phương trình làm cho hiệu năng ít bị cắt và khô trên nền tảng đó. – NoMoreZealots

2

Tôi đã thực sự ấn tượng rằng Dalvik đã được dự định nhiều hơn cho hiệu quả không gian hơn hiệu quả thực hiện. Cũng từ Wikipedia:

Một nén tập tin .dex thường nhỏ hơn vài phần trăm trong kích thước hơn một nén .jar (Java Archive) có nguồn gốc từ các tập tin .class giống nhau.

Trong khi các điện thoại hiện tại có thể sử dụng ARM có hỗ trợ Jazelle, điều đó không nhất thiết phải đúng.

Cũng từ Wikipedia (cảnh báo: tin đồn):

Các thông số kỹ thuật được công bố rất không đầy đủ, là chỉ đủ cho việc viết mã hệ điều hành có thể hỗ trợ một JVM sử dụng Jazelle. Mục đích được khai báo là chỉ có phần mềm JVM cần (hoặc được phép) phụ thuộc vào các chi tiết giao diện phần cứng. Ràng buộc chặt chẽ này tạo điều kiện cho phần cứng và JVM có thể phát triển cùng nhau mà không ảnh hưởng đến phần mềm khác. Thực tế, điều này cho phép ARM Holdings kiểm soát đáng kể các JVM nào có thể khai thác Jazelle. Nó cũng ngăn các JVM nguồn mở sử dụng Jazelle.

Khi họ thêm JITter vào Dalvik, tất cả sẽ là điểm tranh luận.

+0

Hype là một mô hình dựa trên đăng ký là giả sử để cải thiện hiệu suất. Kiểm tra bài đăng của eed3si9n. Tôi đã đọc rằng Jazelle cung cấp cho bạn hiệu suất tốt hơn so với JIT một mình, tôi mong đợi điều tương tự cũng đúng với JITter. Thực tế, tôi không chắc chắn, nhưng tôi biết rằng ARM có toàn bộ công nghệ liên quan đến Java nhằm cải thiện hiệu suất bao gồm cả hoạt động JIT/Jazelle hỗn hợp, nhưng đó có thể chỉ là tiếp thị BS. – NoMoreZealots