Visual Basic Winform - 将构建定位到AnyCPU / x64时性能不佳

时间:2014-08-06 12:16:49

标签: .net vb.net winforms visual-studio-2012

在使用AnyCPU或x64平台(发布模式)构建winform项目(.Net 4.0,Visual Studio 2012)时,我遇到了性能问题。我的屏幕有大约500个控件(这是一个旧屏幕,包括ListBox,Label,Panel,TextBox - 只是基本控件)。

在AnyCPU / x64版本中,初始化所有控件需要90秒(我在设计器文件中的InitializeComponent方法之前和之后放置了计时器;在控件初始化时没有触发事件)。在x86构建中,初始化所有控件只需2-3秒。

所有2个版本都处于发布模式。在调试模式下,两种情况下的性能都非常好(2-3秒)。我的操作系统是Windows 7 64位。

我使用VMMap查看2个版本的内存图。看一下图表(在这个问题的底部),我得到了下面的结果

86

  • 总计(大小):356,172K
  • 堆:17,216K
  • 管理堆:34,240K
  • 筹码:17,920K
  • 私人数据:21,232K
  • Page Table:empty
  • 免费:1,740,916

64

  • 总计(规模):841,200K
  • 堆:49,284
  • 管理堆:397,632
  • 筹码:61,440K
  • 私人数据:23,000K
  • 页表:952K
  • 免费:8,589,094,280K

图像,映射文件,可共享,无法使用。

我有点惊讶的是,与x86相比,x64的托管堆非常大。此外,在加载表单时,x64的私有数据最多为1GB,然后降至MB;然而,x86没有重大变化。

您能帮忙解释一下可能导致性能和数据大小差异的原因吗?如果您需要更多信息,请告诉我。

非常感谢

enter image description here

1 个答案:

答案 0 :(得分:0)

我自己得到了这个问题的答案。只需在发布模式下为项目应用以下配置即可解决问题。

  • 取消选中“启用优化”
  • 为“常规调试信息”
  • 选择“仅pdb”

enter image description here

我的项目使用Visual Studio 2008从VB6转换为VB.NET,因此构建配置不是默认值。我创建了一个新的VB.NET项目并复制其配置。

我不确定为什么这些选项会影响性能。这可能是MS Build的一个问题,或者幕后有另一个故事,我不确定。但是,它有效: - )