Продолжу начатую в моей предыдущей [статье][1] работу по оптимизации алгоритма. Вкратце расскажу, что было сделано. Были взяты готовые [java исходники и каскадная модель][2] одной из реализаций алгоритма [Виола-Джонса][3]. Данный алгоритм используется для поиска объектов на фотографии, в частности для поиска лиц. Тестирование проводил на своем телефоне, по результатам было получено, что изначальный код на java работал 54 секунды на фотографии размером 300 на 400. Это было слишком медленно, переписанный мною код на C++ показал результат в 14 секунд. В комментариях было предложено догнать java-реализацию до C++ следующим образом: отпрофилировать и найти узкие места, и заменить двумерный массив на одномерный. Также у меня в планах было распараллелить алгоритм на C++. Все было сделано и исследовано, результаты ниже. [Читать дальше →][4]
[1]:
http://habrahabr.ru/post/268653/
[2]:
https://code.google.com/p/jviolajones/
[3]:
https://ru.wikipedia.org/wiki/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%92%D0%B8%D0%BE%D0%BB%D1%8B_%E2%80%94_%D0%94%D0%B6%D0%BE%D0%BD%D1%81%D0%B0
[4]:
http://habrahabr.ru/post/268987/#habracut