我有一个.Net4 WinForms应用程序引用第三方.Net2程序集,其中包含图形密集的可视控件。当我意外地将它从AnyCpu切换到x86编译模式时,我注意到应用程序视觉性能的巨大改进。我的开发工具是x64 Windows 7.当控件渲染其图形元素时,改进至少为两倍。
这是一个众所周知的事实,还是我做错了什么?
答案 0 :(得分:3)
请参阅以下两篇文章:
AnyCPU Exes are usually more trouble than they're worth
Visual Studio: Why is there no 64 bit version? (yet)
另见这篇关于64位代码的帖子:Should I choose to take advantage of 64-bit?,它清楚地表明,例如Paint.NET在64位模式下工作得更好,因为开发人员优化了64位代码。
所以,我不认为你做错了什么,但是当你在64位进程中运行时,你正在使用的第三方.NET程序集可能会得到改进。
答案 1 :(得分:2)
这不会让我感到惊讶。当您将应用程序设置为“任何CPU”时,CLR会生成一个应用程序,用户机器上的jiter必须进一步编译以最适合其架构。如果将其设置为“x86”,则dev编译器将为x86计算机编译应用程序,从而减少客户端jiter的负载。