Насколько медленнее написан wxWidget на Python по сравнению с C ++? - PullRequest
6 голосов
/ 19 декабря 2008

Я пытаюсь написать wxWidget, который отображает сеть графических узлов и поэтому выполняет много операций рисования. Я знаю, что использовать Python для этого будет медленнее, но я бы предпочел, чтобы он работал и портировал его позже, когда он будет функционировать. В идеале, если производительность не слишком велика, я бы предпочел сохранить базу кода в Python для простых обновлений.

Что мне интересно, так это то, насколько медленнее ожидать, что все пойдет? Я понимаю, что это расплывчато и открыто, но мне просто нужно понять, чего ожидать. Будет ли рисовать 500 кругов болота вниз? Будет ли это вообще заметно? Каковы ваши переживания?

Ответы [ 3 ]

1 голос
/ 19 декабря 2008

По моему опыту, наивный подход (рисование каждого объекта на экране) в Python увязнет быстрее, чем в C ++. Тем не менее, с Python будет намного быстрее и менее болезненно кодировать его умным способом (см., Например, PseudoDC ), который вырвет наивную реализацию C ++ из воды.

Я согласен с Сураджем. Кроме того, PyGame может быть хорошим выбором, в зависимости от того, насколько приложение интенсивно использует графику, по сравнению с удобным материалом wxPython, от которого вы отказываетесь.

1 голос
/ 19 декабря 2008

Для рисования люди предложили PyGame. Мне нравится PyGame, с ним легко работать и он хорошо работает. Другим вариантом может быть Pyglet или использование PyOpenGL (вы, скорее всего, тоже можете нарисовать виджет wx, хотя я никогда этого не делал).

Лично я бы делал это на Python, используя любую библиотеку, с которой я наиболее знаком (в моем случае я бы использовал pygtk и cairo), и беспокоился о производительности только тогда, когда это становилось проблемой, - затем профилировал и оптимизировал узкое место, если его код Python работает медленно, я буду знать, какие биты вместо этого запускать в C.

1 голос
/ 19 декабря 2008

ИМХО, главным узким местом будут структуры данных, которые вы собираетесь использовать для представления сетевого графа. Я кодировал аналогичное приложение для отслеживания зависимостей между различными версиями компонентов в системе, и графика была последней вещью, о которой мне нужно было беспокоиться, и я определенно рисовал более 500 объектов с градиентной заливкой для некоторых из них!

Если вы застряли, вы должны оформить заказ, используя PyGame для рисования.

...