在使用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
64
图像,映射文件,可共享,无法使用。
我有点惊讶的是,与x86相比,x64的托管堆非常大。此外,在加载表单时,x64的私有数据最多为1GB,然后降至MB;然而,x86没有重大变化。
您能帮忙解释一下可能导致性能和数据大小差异的原因吗?如果您需要更多信息,请告诉我。
非常感谢
答案 0 :(得分:0)
我自己得到了这个问题的答案。只需在发布模式下为项目应用以下配置即可解决问题。
我的项目使用Visual Studio 2008从VB6转换为VB.NET,因此构建配置不是默认值。我创建了一个新的VB.NET项目并复制其配置。
我不确定为什么这些选项会影响性能。这可能是MS Build的一个问题,或者幕后有另一个故事,我不确定。但是,它有效: - )