我正在考虑编写一个显示图形节点网络的 wxWidget,因此会执行很多绘图操作。我知道使用 Python 来做这件事会更慢,但我宁愿让它工作并稍后在它运行时移植它。理想情况下,如果性能影响不是太大,我更愿意将代码库保留在 Python 中以便于更新。
我想知道的是我应该期望事情进展多慢?我意识到这是模糊和开放式的,但我只需要了解会发生什么。画 500 圈会卡住吗?会不会很明显?你有什么经验?
我正在考虑编写一个显示图形节点网络的 wxWidget,因此会执行很多绘图操作。我知道使用 Python 来做这件事会更慢,但我宁愿让它工作并稍后在它运行时移植它。理想情况下,如果性能影响不是太大,我更愿意将代码库保留在 Python 中以便于更新。
我想知道的是我应该期望事情进展多慢?我意识到这是模糊和开放式的,但我只需要了解会发生什么。画 500 圈会卡住吗?会不会很明显?你有什么经验?
恕我直言,主要瓶颈将是您将用于表示网络图的数据结构。我编写了一个类似的应用程序来跟踪系统中各种组件版本之间的依赖关系,而图形是我最不必担心的事情,而且我确实为其中一些绘制了 500 多个带有渐变填充的对象!
如果你陷入困境,你应该使用PyGame来绘制东西。
以我的经验,以天真的方式做事(将每个对象绘制到屏幕上)在 Python 中会比 C++ 更快地陷入困境。但是,使用 Python 以聪明的方式编写代码会更快,也不会那么痛苦(例如,参见PseudoDC),这将把天真的 C++ 实现从水中吹走。
我同意苏拉杰。与您将放弃的方便的 wxPython 相比,PyGame 可能是一个不错的选择,具体取决于应用程序的图形密集程度。
对于绘图,人们建议使用 PyGame。我喜欢 PyGame,它易于使用且运行良好。其他选择是 Pyglet,或者使用 PyOpenGL(你很可能也可以绘制到 wx 小部件,尽管我从未这样做过)。
就个人而言,我会在 Python 中使用我最熟悉的任何库(在我的情况下,我会使用 pygtk 和 cairo)并且只在它成为问题时才担心性能 - 然后分析和优化瓶颈,如果它的 Python 代码很慢,我会知道在 C 中运行哪些位。