我正在研究用於Linux和Windows的便攜式GUI工具包,並且遇到了一些性能問題。在幾個系統上(因爲我的上網本基於臭名昭着的英特爾GMA 3650)受安裝的驅動程序影響很大。X11 GUI性能
但是什麼是悖論,當安裝後備VESA驅動程序時,我的代碼的性能是遠高於專用專有驅動程序的。
另一方面與專有驅動程序,如預期電腦的性能是非常好的。硬件加速工程,高清視頻播放沒有問題,這種方式只有我的代碼受這種奇怪的反向方式影響。
我的代碼使用類似的Xlib,Xft的,並行線程等
在Windows端口(使用WINAPI)運行的公共庫在極快的速度沒有任何問題。即使在葡萄酒。另一個悖論是,爲Windows編譯並在WINE中運行的相同程序的繪製速度比Linux編譯程序快得多。
什麼可能是造成這種影響的原因,以及爲了修復它而在哪裏挖掘。
的源代碼庫是managed by fossil scm
一個測試例子是在trunk/freshlib/TestFreshLib.fpr
(爲純FASM編譯freshlib/test_code0/TestLib.asm
)
這是便攜式例如其可被編譯爲Windows和Linux爲好。
更新1:經過一番思考和代碼探索之後,我有一個假設。我使用兩種不同的方法在窗口上繪製圖形:
- 使用XLib繪圖函數繪製線條和矩形。
- 使用Xft庫來繪製文本。
我測試的控件使用雙緩衝,其中圖像緩衝區是服務器端的像素圖。
但是IIRC,Xft在客戶端繪製,然後將圖像作爲位圖圖像發送到X服務器,而XLib直接在服務器端繪製。
這兩種方法之間可能存在某些衝突(以某種方式與硬件加速相關)導致性能下降?
這聽起來很不可思議。你能否將問題隔離到SSCCE中? –
什麼是SSCCE?請注意,我不是C/C++或Linux/X11編程方面的專家。 :) – johnfound
啊,我知道它「短,自成體系,正確,例子」。但不幸的是沒有。我當然可以指出你的存儲庫 - 它是一個開源的,但有一大堆文件,我不知道在哪裏搜索問題。 (而且是彙編語言:)) – johnfound