Продуктивність програми Java vs C - пояснює Гері

Автор: John Stephens
Дата Створення: 23 Січень 2021
Дата Оновлення: 1 Липня 2024
Anonim
Продуктивність програми Java vs C - пояснює Гері - Додатки
Продуктивність програми Java vs C - пояснює Гері - Додатки

Зміст


Починаючи з найгіршого показника, 32-розрядного Android 5.0, показує, що код Java працював на 296% повільніше, ніж C, або іншими словами в 4 рази повільніше. Знову ж таки, пам’ятайте, що абсолютна швидкість тут не важлива, а різниця у часі, необхідному для запуску коду Java порівняно з кодом C, на одному пристрої. 32-розрядний Android 4.4 KitKat з Dalvik JVM трохи швидше на 237%. Після переходу на Android 6.0 Marshmallow речі починають різко покращуватися, а 64-розрядний Android 6.0 приводить до найменшої різниці між Java та C.

Другий тест - тест простого числа, використовуючи пробний поділ. Як зазначалося вище, у цьому коді використовується 64-розряднадовго цілих чисел і тому віддасть перевагу 64-бітовим процесорам.

Як очікується, найкращі результати отримають від Android, який працює на 64-бітних процесорах. Для 64-розрядних Android 6.0 різниця швидкостей дуже мала, всього 3%. У той час як для 64-розрядних Android 5.0 це 38%. Це демонструє вдосконалення між ART на Android 5.0 та Оптимізація компілятор, використовуваний ART в Android 6.0. Оскільки Android 7.0 N все ще є бета-версією розробки, я не показав результатів, проте, як правило, він працює так само добре, як і Android 6.0 M, якщо не краще. Гірші результати стосуються 32-бітної версії Android, а як не дивно 32-розрядна Android 6.0 дає найгірші результати в групі.


Третій і заключний тест виконує важку математичну функцію на мільйон ітерацій. Ця функція виконує як цілу арифметичну, так і арифметичну з плаваючою точкою.

І тут ми вперше маємо результат, коли Java насправді працює швидше, ніж C! Існує два можливих пояснення цього, і обидва стосуються оптимізації та Озагадковістькомпілятор від ARM. По-перше, Озагадковість компілятор міг створити більш оптимальний код для AArch64, з кращим розподілом регістрів тощо, ніж компілятор C в Android Studio. Кращий компілятор завжди означає більш високу продуктивність. Також може бути шлях через код, який виходить Oзагадковістькомпілятор, що підрахував, може бути оптимізований, оскільки він не впливає на кінцевий результат, але компілятор C не оптимізував цю оптимізацію. Я знаю, що така оптимізація була однією з найбільших фокусів роботи Озагадковістькомпілятор в Android 6.0. Оскільки ця функція є лише чистим винаходом з мого боку, може бути спосіб оптимізувати код, який опускає деякі розділи, але я цього не помітив.Інша причина полягає в тому, що виклик цієї функції навіть мільйон разів не призводить до запуску сміттєзбірника.


Як і у випадку з праймером, цей тест використовує 64-розряднідовго цілих чисел, тому наступний найкращий бал припадає на 64-розрядний Android 5.0. Потім йде 32-розрядний Android 6.0, далі 32-розрядний Android 5.0 і нарешті 32-розрядний Android 4.4.

Підбивання

Загалом C швидше, ніж Java, проте розрив між ними різко зменшився з випуском 64-розрядного Android 6.0 Marshmallow. Звичайно, в реальному світі рішення про використання Java або C - не чорно-біле. Незважаючи на те, що C має деякі переваги, усі інтерфейси Android, усі сервіси Android та всі Android API призначені для виклику з Java. C дійсно може бути використаний лише тоді, коли потрібно порожнє полотно OpenGL і ти хочеш малювати на ньому, не використовуючи ніяких API Android.

Однак якщо у вашої програми є важкий підйом, то ці деталі можна перенести на C, і ви можете побачити підвищення швидкості, однак не настільки, як ви могли бачити.

В ідеалі батареї смартфонів вистачали б на цілий день з однією зарядкою. Але це не завжди можливо, а якщо на деяких телефонах є менші акумулятори, або, можливо, ви просто забули зарядити телефон напер...

У заяві, опублікованій сьогодні, Федеральна комісія зв'язку (FCC) схвалила пропозицію, яка сприяє компаніям блокувати небажані роботи. Усі п’ять уповноважених схвалили цю пропозицію, хоча двоє упо...

Для Вас