Я пытаюсь разработать интерфейс плагина в python для популярной 3d-программы под названием Blender 3D. Цель интерфейса плагина - расширить некоторые функции программы через python.Переписать часть программы c/C++ в python
Теперь моя проблема в том, что я пытаюсь оценить влияние производительности. Я заменил существующую функциональность, написанную в c-коде, чем-то написанным на python.
Я обеспокоен тем, что это может замедлить работу приложения, поскольку функциональность, которую я заменяю, выполняется в реальном времени и должна быть очень быстрой. Он состоит из простой функции c, которая просто разбивает некоторые многоугольники в треугольниках.
Таким образом, операции, которые я выполняю, работают над частями данных, которые обычно не имеют более 30 или 40 точек ввода. И самое большее операции, которые я выполняю на них, имеют сложность log (n) * n^2.
Но я буду создавать много объектов python каждую секунду, поэтому я уже готов реализовать объединение для утилизации объектов.
Теперь я в основном обеспокоен тем, что код python будет работать в 100 раз медленнее, чем код c и замедлить работу приложения. Я должен беспокоиться?
В лучшем случае я буду выполнять 8500 вычислений в одном вызове функции python. Эта функция будет вызываться каждый раз при визуализации интерфейса приложения.
Вы посмотрели 'ctype'? Вы могли бы просто создать свои объекты на Python и выполнить свой расчет с помощью вашего кода C. Есть некоторые трюки, чтобы передать объект Python в программу C, но если вы знакомы с C, он должен быть «легким». – CoMartel
. Обычный способ решения этих проблем - профилирование: посмотрите, будут ли компоненты C++, которые вы хотите заменить, взять большой кусок времени выполнения. Если нет, то замена их на Python не будет слишком дорогостоящей. И, поскольку у вас есть время профилирования для частей C++, вы можете измерить каждую новую функцию/метод Python/stanza и сравнить ее время выполнения с эквивалентным временем работы C++. – boardrider
Говоря это, вы будете медленнее на Python, но я не знаю, насколько это зависит от вашего приложения. 'numpy' (и другие) работает довольно быстро, потому что он имеет много функций, реализованных в C. – CoMartel