当前位置 : 主页 > 编程语言 > c语言 >

c# – GTK(GTKSharp)在Windows中表现不佳

来源:互联网 收集:自由互联 发布时间:2021-06-25
在我的Mono(C#)项目中,我将使用GTK作为UI.但是我注意到的一件事是,在我的Arch linux上网本中,性能非常快,因此鼠标悬停,小部件重绘等事件真的很快. 与双核CPU上的windows(7)相比,性能确实很弱
在我的Mono(C#)项目中,我将使用GTK作为UI.但是我注意到的一件事是,在我的Arch linux上网本中,性能非常快,因此鼠标悬停,小部件重绘等事件真的很快.

与双核CPU上的windows(7)相比,性能确实很弱.这困扰我.

我是否做错了保证操作系统之间的性能差异?

有什么方法可以在Windows上优化GTK?对于悬停事件来说,花费大约0.5秒的时间来开启它是非常糟糕的,而它几乎立即用于Linux上的弱(上)上网本.

我的代码在这里用于GUI层:http://code.google.com/p/subsynct/source/browse/branches/dev/subsync#subsync/GUI

谢谢!

真正的问题是图形库GTK使用.开罗.你说得对,与Windows相比,GTK在Linux和其他操作系统上的表现要好得多.这表明实际上问题并不在于整个开罗图书馆.它位于开罗的Win32后端.根据开罗文件中的 Backend-Info;开罗使用 xlib,在某些情况下 cairo-gl(认为是定制的OpenGL)可以在Linux和其他平台上使用.虽然在Windows上它使用 Win32 GDI,毕竟有点慢和过时(更不用说完全软件渲染).

尽管如此,即使这并不能完全解释Gtk在Windows上的糟糕表现.另一个问题可能是,不是使用本机小部件,Gtk更喜欢draw it’s own widgets,它在所有平台上看起来几乎相同.但是在Windows上,它还尝试使用LibWimp emulate本机小部件来进一步增加原生外观.这个额外的Windows专用步骤也可能会导致性能开销.要自己查看此内容,请尝试在GIMP目录中删除(或重命名)libwimp.dll.之后GIMP运行得更快(虽然看起来有点非原生).

还有一些其他较小的因素可能会或可能不会影响Gtk在Windows上的性能,例如GTK与其他具有类似1-2的工具包相比,具有12-15个额外dll的额外运行时间.动态链接整个Gtk运行时可能会大大增加启动时间.还有一个事实是Gtk使用了许多其他库,如Glib,Pango,当然还有Cairo.为这些库编写 glue code 也会增加很多开销,有时甚至会增加像Gdk这样的额外库.

为了优化Gtk,您可以尝试更改开罗的后端(困难,非重新安装并需要另外大量的胶水代码)或停止使用libWimp(这将使Gtk看起来不那么原生).但总体而言,我认为GTK并不那么慢.我个人从未需要使用任何优化.即使我过去也使用过WinApi.

网友评论