Ускоряемый Код На Android

Я продолжу то, что начал в предыдущем статья работа над оптимизацией алгоритма.

Коротко расскажу, что было сделано.

Были приняты готовыми Исходники Java и каскадная модель одна из реализаций алгоритма Виола-Джонс .

Этот алгоритм используется для поиска объектов на фотографии, в частности для поиска лиц.

Я протестировал его на своем телефоне, и результаты показали, что исходный код на Java работал 54 секунды на фотографии размером 300 на 400. Это было слишком медленно, код, который я переписал на C++, показал результат 14 секунд. В комментариях было предложено догнать java-реализацию до C++ следующим образом: профилировать и найти узкие места, а двумерный массив заменить на одномерный.

У меня также были планы распараллелить алгоритм на C++.

Все сделано и исследовано, результаты ниже.

Мы представляем выпуск Java. Статистику мы берем во время работы основной части алгоритма.

Мы видим эту картинку (результат файл кому интересно):

Ускоряемый код на Android

Методы списков отнимают много времени.

В этой ситуации мы можем легко заменить все списки массивами, что и используется в C++.

Заменяем и получаем следующий результат( в файле ):

Ускоряемый код на Android

Обратите внимание на Math.sqrt, процент его выполнения увеличился с 6,7 до 13,5, а это значит, что у других сократились затраты времени, а запуск на телефоне показал 38 секунд. Остальное время уходит на примитивные методы: умножение, деление и получение элемента массива и Math.sqrt. Соответственно, я уже не вижу, где и что можно изменить, потому что.

C++ в точности повторяет код. Одномерные массивы вместо двумерных .

Давайте изменим следующий код: Теги: #android sdk #java #android ndk #C++ #распараллеливание #программирование #разработка под Android

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.