我正在尝试一些用于某些C ++调用的Python API,我发现性能没有降低。实际上,我认为只用C ++编写的等效应用程序有点慢/拉。
特别是,我在C ++中尝试Pyside和一些QT应用程序。
现在我知道GUI喜欢那些对动态绑定有很好支持的语言,但我对Python内部结构不太了解:是否有一些解释为什么Pyside应用程序至少和C ++一样快相当于?
如果我在C ++程序中提供Python API,那么成本是多少?还有一个间接?
P.S。
python是否为跨平台开发提供了一些原生的Windowing框架?
答案 0 :(得分:5)
冒着被投票的风险,我将提供一个非常粗略的,有些主观的假设。
QT虽然非常通用,但并不能提供超快的GUI API。它的抽象程度相当高。我们讨论的是每个小部件,每个布局等的堆分配。只需看看QListWidget以及QListWidgetItem本身是一个单独分配的,相当复杂的对象。我曾经不得不描述开发人员的代码 - 怀疑逻辑很慢,但我发现操作花了大约6秒的时间来创建一个包含数千个列表条目的QListWidget。这是在C ++中。我对此的看法,没有看到你的代码和QT的使用,是QT GUI的总体开销使得像C ++和Python这样的语言之间的差异可以忽略不计。
现在不容置疑的是,通过Python使用QT的效率远远高于在C ++中使用QT的效率,我们必须使用预处理的信号和插槽来处理MOC等。您可能希望专注于不仅仅是在一种语言中使用GUI框架与另一种语言的性能差异。
PS python是否提供了一些原生的Windowing框架 跨平台开发?