Производительность приложений Java и C - объясняет Гэри

Автор: John Stephens
Дата создания: 23 Январь 2021
Дата обновления: 1 Июль 2024
Anonim
Java vs C app performance – Gary explains
Видео: Java vs C app performance – Gary explains

Содержание


Начиная с худшего результата, 32-разрядная версия Android 5.0 показывает, что код Java работал на 296% медленнее, чем C, или, другими словами, в 4 раза медленнее. Опять же, помните, что абсолютная скорость здесь не важна, а скорее разница во времени, затрачиваемом на выполнение кода Java по сравнению с кодом C на том же устройстве. 32-битный Android 4.4 KitKat с Jalm Dalvik немного быстрее на 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! Есть два возможных объяснения этому, и оба связаны с оптимизацией и Optimizingкомпилятор из ARM. Во-первых, Optimizing Компилятор мог бы создать более оптимальный код для AArch64 с лучшим распределением регистров и т. д., чем компилятор C в Android Studio. Лучший компилятор всегда означает лучшую производительность. Также может быть путь через код, которыйptimizingрассчитанный компилятор может быть оптимизирован, поскольку он не влияет на конечный результат, но компилятор C не заметил этой оптимизации. Я знаю, что этот вид оптимизации был одним из основных направленийptimizingкомпилятор в 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 и все API-интерфейсы Android предназначены для вызова из Java. C действительно может быть использован только тогда, когда вам нужен пустой холст OpenGL и вы хотите рисовать на этом холсте без использования API-интерфейсов Android.

Однако, если вашему приложению предстоит выполнить тяжелую работу, эти части могут быть перенесены на C, и вы можете увидеть улучшение скорости, однако не так много, как вы когда-то могли видеть.

Умные лампочки в наши дни стоят десятку. Один из самых популярных вариантов на рынке - Philip Hue. Самым большим недостатком этих интеллектуальных ламп является то, что для работы им требуется концент...

До 16 миллионов цветов и возможность управлять всей настройкой освещения с помощью телефона - это просто фантастика. Но если вы не готовы переключиться на интеллектуальные лампы, потому что предпочита...

Наши публикации