C# GTK&x2B;(GTKSharp)Windows中的性能不佳

C# GTK&x2B;(GTKSharp)Windows中的性能不佳,c#,mono,gtk,gtk#,C#,Mono,Gtk,Gtk#,在我的跨平台Mono(C#)项目中,我使用GTK作为UI。然而,我注意到的一件事是,在我的Archlinux上网本上,性能非常快,因此鼠标悬停、小部件重画等事件都非常快 与双核CPU上的windows(7)相比,它的性能真的很差。这让我很困惑 我是否做错了什么事情,导致操作系统之间的性能差异 我可以通过哪些方法在Windows上优化GTK?如果悬停事件需要大约0.5秒的时间来启动,那真的很糟糕,而在Linux的弱小(er)上网本上,悬停事件几乎是立即发生的 下面是GUI层的代码: 谢谢 我猜性能

在我的跨平台Mono(C#)项目中,我使用GTK作为UI。然而,我注意到的一件事是,在我的Archlinux上网本上,性能非常快,因此鼠标悬停、小部件重画等事件都非常快

与双核CPU上的windows(7)相比,它的性能真的很差。这让我很困惑

我是否做错了什么事情,导致操作系统之间的性能差异

我可以通过哪些方法在Windows上优化GTK?如果悬停事件需要大约0.5秒的时间来启动,那真的很糟糕,而在Linux的弱小(er)上网本上,悬停事件几乎是立即发生的

下面是GUI层的代码:


谢谢

我猜性能问题在开罗。我建议您在Linux中使用gtkparasite来查看应用程序的某些部分在何时何地被重新绘制,并对其进行优化


您还可以使用Windows上MS提供的免费CLR Profiler来查找应用程序中的热点。

真正的问题在于GTK使用的图形库。开罗。你说得对,GTK在Linux和其他操作系统上的性能比Windows好得多。这表明,实际上问题并不在于整个开罗图书馆。它位于Cairo的Win32后端。根据开罗的文件;Cairo在Linux和其他平台上使用和(在某些情况下)使用定制的OpenGL。而在Windows上,它使用的毕竟是有点慢和过时的(更不用说完全的软件渲染了)

尽管如此,即使这样也不能完全解释Gtk在Windows上的糟糕性能。另一个问题可能是,Gtk不使用本机小部件,而是更喜欢在所有平台上看起来几乎相同的小部件。然而,在Windows上,它也尝试使用本机窗口小部件来进一步增加本机外观。这一额外的仅限Windows的步骤还可能导致性能开销。要查看这一点,请尝试删除(或重命名)GIMP目录中的libwimp.dll。GIMP在那之后运行得更快(尽管看起来有点非本地)

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

为了优化Gtk,您可以尝试更改Cairo的后端(困难、不可修复且需要大量粘合代码),或者停止使用libWimp(这将使Gtk看起来不那么原生)。但总的来说,我认为GTK并没有那么慢。我个人从来不需要使用任何优化。尽管我过去也用过WinApi