Hiệu suất ứng dụng Java vs C - Gary giải thích

Tác Giả: John Stephens
Ngày Sáng TạO: 23 Tháng MộT 2021
CậP NhậT Ngày Tháng: 1 Tháng BảY 2024
Anonim
Hiệu suất ứng dụng Java vs C - Gary giải thích - ỨNg DụNg
Hiệu suất ứng dụng Java vs C - Gary giải thích - ỨNg DụNg

NộI Dung


Bắt đầu với điểm số tệ nhất, Android 5.0 32 bit, cho thấy mã Java chạy chậm hơn 296% so với C, hay nói cách khác là chậm hơn 4 lần. Một lần nữa, hãy nhớ rằng tốc độ tuyệt đối không phải là quan trọng ở đây, mà là sự khác biệt về thời gian chạy mã Java so với mã C, trên cùng một thiết bị. Android 4.4 KitKat 32 bit với Dalvik JVM của nó nhanh hơn một chút với 237%. Khi bước nhảy được thực hiện cho Android 6.0 Marshmallow, mọi thứ bắt đầu cải thiện đáng kể, với Android 6.0 64 bit mang lại sự khác biệt nhỏ nhất giữa Java và C.

Bài kiểm tra thứ hai là bài kiểm tra số nguyên tố, sử dụng phép thử bằng cách chia. Như đã lưu ý ở trên mã này sử dụng 64-bitDài số nguyên và do đó sẽ ưu tiên bộ xử lý 64 bit.


Như mong đợi, kết quả tốt nhất đến từ Android chạy trên bộ xử lý 64 bit. Đối với Android 6.0 64 bit, chênh lệch tốc độ rất nhỏ, chỉ 3%. Trong khi đối với Android 5.0 64 bit thì nó là 38%. Điều này cho thấy sự cải tiến giữa ART trên Android 5.0 và Tối ưu hóa trình biên dịch được sử dụng bởi ART trong Android 6.0. Vì Android 7.0 N vẫn là bản beta phát triển nên tôi đã hiển thị kết quả, tuy nhiên, nó thường hoạt động tốt như Android 6.0 M, nếu không nói là tốt hơn. Các kết quả tồi tệ hơn dành cho các phiên bản Android 32 bit và Android 6.0 32 bit kỳ lạ mang lại kết quả tồi tệ nhất của nhóm.

Bài kiểm tra thứ ba và cuối cùng thực hiện một hàm toán học nặng cho một triệu lần lặp. Hàm số học số nguyên cũng như số học dấu phẩy động.


Và đây là lần đầu tiên chúng ta có một kết quả mà Java thực sự chạy nhanh hơn C! Có hai cách giải thích cho điều này và cả hai đều liên quan đến tối ưu hóa và Optimizingtrình biên dịch từ ARM. Đầu tiên, chữ Optimizing trình biên dịch có thể đã tạo ra mã tối ưu hơn cho AArch64, với phân bổ đăng ký tốt hơn, v.v., so với trình biên dịch C trong Android Studio. Một trình biên dịch tốt hơn luôn có nghĩa là hiệu suất tốt hơn. Ngoài ra có thể có một đường dẫn thông qua mã mà Optimizingtrình biên dịch đã tính toán có thể được tối ưu hóa vì nó không ảnh hưởng đến kết quả cuối cùng, nhưng trình biên dịch C không phát hiện ra tối ưu hóa này. Tôi biết rằng loại tối ưu hóa này là một trong những trọng tâm lớn cho Optimizingtrình biên dịch trong Android 6.0. Vì hàm này chỉ là một phát minh thuần túy, nên có thể có một cách để tối ưu hóa mã mà bỏ qua một số phần, nhưng tôi đã phát hiện ra nó.Lý do khác là việc gọi chức năng này, thậm chí một triệu lần, không làm cho trình thu gom rác chạy.

Như với bài kiểm tra số nguyên tố, bài kiểm tra này sử dụng 64-bitDài số nguyên, đó là lý do tại sao điểm số tốt nhất tiếp theo đến từ Android 5.0 64 bit. Sau đó là Android 6.0 32 bit, tiếp theo là Android 5.0 32 bit và cuối cùng là Android 4.4 32 bit.

Gói lại

Nhìn chung C nhanh hơn Java, tuy nhiên khoảng cách giữa hai người đã giảm đáng kể khi phát hành Android 6.0 Marshmallow 64 bit. Tất nhiên trong thế giới thực, quyết định sử dụng Java hoặc C là đen trắng. Mặc dù C có một số lợi thế, tất cả các giao diện người dùng Android, tất cả các dịch vụ Android và tất cả các API Android đều được thiết kế để được gọi từ Java. C thực sự chỉ có thể được sử dụng khi bạn muốn có một khung vẽ OpenGL trống và bạn muốn vẽ trên khung vẽ đó mà không cần sử dụng bất kỳ API Android nào.

Tuy nhiên, nếu ứng dụng của bạn có một số công việc nặng nhọc phải làm, thì những phần đó có thể được chuyển sang C và bạn có thể thấy sự cải thiện tốc độ, tuy nhiên không nhiều như bạn từng thấy.

Tặng quà quốc tế Samsung Galaxy Note 9!

Monica Porter

Tháng BảY 2024

Nếu bạn đang tìm kiếm cách tốt nhất để cập nhật với AndroidAuthority.com, thì không có gì khác ngoài ứng dụng AA cho Android. Có ẵn miễn phí trong Cửa...

Nếu bạn ở hữu Galaxy Note 9 trên print, hãy lắng nghe! Nhiều người dùng trên internet đã báo cáo bản cập nhật Android 9 Pie / amung One UI đang bắt đầu được tung ra ...

Bài ViếT MớI