2012-10-01 64 views
1

我在嘗試一些用於某些C++調用的Python API,並且我看不到性能下降。實際上,我認爲只用C++編寫的等效應用程序有點慢/不靈活。C++軟件中的Python API的成本是多少?

特別是,我在嘗試Pyside和一些在C++中的QT應用程序。

現在我知道圖形用戶界面喜歡對動態綁定有很好支持的語言,但我對Python內部知識並不太瞭解:是否有一些解釋說明Pyside應用程序的速度至少與相當於C++嗎?

如果我在我的C++程序中提供Python API,成本是多少?更多的間接?

P.S.
python是否提供了一些用於跨平臺開發的原生Windowing框架?

+0

PySide是圍繞C庫是一個真正的瘦包裝。太細,恕我直言 - 它基本上只是公開功能,所以它根本不像一個Python庫。 –

+0

@Lattyware我在這裏討論的APIs – axis

回答

5

冒着被低估的風險,我會提供一個非常粗糙的,有點主觀的假設。

QT雖然非常通用,但並不完全提供快速的GUI API。它的抽象級別有相當的成本。我們正在討論每個小部件的堆分配,每個佈局等。只要看看QListWidget和QListWidgetItem本身是一個單獨分配的相當複雜的對象。我曾經不得不描述一個開發人員的代碼 - 邏輯被懷疑是緩慢的,但是我發現幾乎整個操作需要花費6秒的時間創建了一個包含數千個列表條目的QListWidget。這是用C++編寫的。

我對此的看法沒有看到您的代碼和QT的用法,QT GUI的總體開銷使得像C++和Python這樣的語言之間的差異可以忽略不計。

現在有什麼不值得商榷的是,通過Python使用QT的生產力遠遠大於在C++中使用QT的效率,我們必須用預處理信號和插槽等來處理MOC。您可能想要關注不僅僅是在一種語言中使用GUI框架的性能差異。

PS python是否爲 跨平臺開發提供了一些原生的窗口框架?

http://wiki.python.org/moin/GuiProgramming

+1

這就是爲什麼真正的程序員使用虛擬列表。 *運行* –

+0

我基本同意這一點。如果大多數正在執行的指令都在QT中,那麼它與寫入的業務邏輯沒有太大區別。你只是不會看到這麼大的差別。 –

+0

所以只有在涉及到Python下的GUI世界時纔有約束力? – axis