Всем привет! Начитаю изучать программирование под Android с применением библиотеки OpenCV. Скорость работы Native кода меня разочаровала. Ручной перебор пикселей работает примерно в 10 раз медленнее, чем на процессоре х86. Оптимизацию в CMakeLists.txt включал, но не знаю правильно ли это было сделано. Далее я замерил скорость работы функции:
cv::cvtColor(mat, gray, cv::COLOR_RGBA2GRAY);
Она тоже примерно в 10 раз отстаёт.
А размытие по гауссу с радиусом 15 отстаёт по скорости аж в 50 раз:
cv::GaussianBlur(gray, gray_blurred, cv::Size(), 15.0);
Я только на днях начал изучать программирование под андроид и только вчера попробовал NDK, поэтому многое для меня непривычно. Такое сильное отставание смартфонов от ПК -- это нормально? Я ожидал, что замедление будет раза в 2-4, тем более для Native, но не в 50 раз. Есть подозрение, что библиотека на ПК активно использует векторные инструкции и, возможно, многопоточность, в то время как на смартфоне эти фичи по умолчанию почему-то не задействованы, но это вряд ли. Мне сейчас просто интересно мнение тех, кто пишет на C++ под андроид и ПК.