>在Mac OSX上运行时出现严重的性能问题

我有一个关于C#,Mono和OSX的问题。 我在C#中使用Windows Forms创建了一个程序,并试图使它在Mac上可用。

问题是,OSX的性能非常差,我无法找到加速它的方法。 实际上,程序本身非常简单:只使用两个DataGridViews,几个ComboBoxes和Buttons,一个TabControl,几个SplitContainer的客户端服务器系统 - 就这些! 在Windows上运行良好,没有任何速度问题。

当我在Mac(MacBook Air,OSX版本10.8.3)上打开该程序时,需要很长时间才能加载GUI。 在Windows上构建它大约需要0.5秒,在Mac上需要近一分钟(!)。 所有控件的构建速度非常缓慢,大多数情况下,通过点击最少10秒的响应来与程序进行交互。

我了解到Mono本身使用Windows.System.Drawing构建GUI。 这是该计划响应速度极慢的一个可能原因吗? 我能做些什么来加快程序的速度? 必须有某种方式,因为如果Mono对于这样一个简单的程序甚至不可用,那么Mono就毫无用处。

我花了几个小时试图谷歌我的问题的答案,只是找不到有用的东西:AheadOfTime - 编译,LLVM - 没有什么提高性能。

提前感谢您的回答!

克里斯

更新:我现在稍微降低了性能问题。 单声道似乎与GridView的CellFormating有问题。 我改变了适用部分的代码,现在它运行得更快。

尽管如此,构建GUI仍需要很长时间。 你可以从字面上看它构建的GUI。 对此有何建议?


加载时间可能是JIT第一次编译你的代码(我的程序集需要30-60秒才能第一次启动); 第二次运行程序的速度应该更快。 在Windows上,Visual Studio将AOT作为编译的一部分,所以第一次启动很快。 我认为这是由于字体渲染造成的慢速控制性能(它甚至不是好看的渲染)。 最重要的是,键盘处理错误地实施,并且自从Mountain Lion以后,您还需要用户下载XQuartz。

单声道是有用的,但它的WinForms实现不是。 如果OS X的支持对你很重要,你的选择如下:

  • 使用不同的工具包(GTK#,WX.Net等)。
  • 使用XCode构建Cocoa Library DLL并从C#中PInvoke它。
  • 最安全的选择是后者,但如果您的需求很简单,那么只需使用不同的工具包就可以更容易。


    您将不得不在Mac或Linux上进行调试,以便找到究竟运行如此糟糕的情况。 单声道有一些实现令人惊讶的慢。 当你看到UI速度慢的症状时,原因可能完全是另一回事。

    例如,在类似的情况下,我发现XmlDocument非常慢,因为我正在研究UI为什么如此迟钝。 如果您使用XmlDocument存储来自服务器的数据,则可能会导致您的用户界面速度缓慢且几乎无法响应。

    链接地址: http://www.djcxy.com/p/70647.html

    上一篇: > Serious performance problems when running on Mac OSX

    下一篇: Difference between two lists preserving duplicates