Почему функция водораздела от SciKit слишком медленная?

Я сделал сравнение между временем выполнения только для функций водораздела в OpenCV, Skimage(SciPy) и BoofCV. Хотя OpenCV выглядит намного быстрее, чем два других (среднее время: 0,0031 секунды на 10 выборок), время выполнения Skimage значительно варьируется (от 0,03 до 0,554 секунды). Мне интересно, почему это происходит? Разве это не должна быть нативная функция Python?

1 ответ

Трудно понять без подробностей, почему ваше приложение работает медленно. В целом, однако, код scikit-image не так оптимизирован, как OpenCV, но охватывает еще много вариантов использования. Например, он может работать со значениями с плавающей запятой в качестве входных данных, а не только с uint8, и может работать с трехмерными изображениями или даже изображениями с более высоким размером.

О производительности: OpenCV написан на высокооптимизированном C/C++, а scikit-изображение написано на Cython, гибридном языке, который компилирует код Python в C, достигая C-производительности. Тем не менее, некоторые оптимизации не доступны в Cython, и, как я упоминал выше, есть различия в том, что на самом деле реализовано, что приводит к разнице в производительности.

Другие вопросы по тегам