我应该什么时候用/platform:x64编译我的c#代码?
本文关键字:我的 编译 代码 x64 什么时候 platform 我应该 | 更新日期: 2023-09-27 18:16:36
阅读微软对/platform不同选项的解释,我发现当我使用/platform:anycpu时,它将在32位系统上运行为32位应用程序,在64位系统上运行为64位应用程序。
那么我为什么要强迫它使用x64呢?
人们是否有理由使用其他选择?
最重要和最有用的区别是在内存管理方面。x86应用程序不能分配超过4GB的RAM。但x64应用程序可以。还有:
这与CLR在实现时如何执行您的代码有关。请记住,CLR是动态编译代码的,当第一次请求时,IL代码被汇编成机器码,然后缓存(这就是为什么应用程序的第一次访问速度较慢)。现在,如果您选择x86,那么您将标记您的代码,表明您的应用程序将在x86处理器上运行,因此CLR可以使用专门用于该类型处理器的汇编函数(获得性能优势)。如果选择x64,也会发生同样的情况,其中寄存器更大,并且有新的x64函数可以加快应用程序的速度。如果您选择"Any",CLR将不使用任何CPU特定的功能,并将保持标准的指令集。
参考:项目设置CPU: x86, x64, Any CPU
当您尝试加载用c++制作的dll时,这一点很重要。我有一个特殊的情况,当我不能执行我的程序时,编译在x64或任何CPU,但它在32位工作得很好。
在其他情况下,当您为ASP。网络页面。如果你把它编译成32位,你必须配置IIS来正确加载它们。
当你正在编写一个应用程序,应该只在64位操作系统上运行。例如,当它被抛弃时,由于某些原因,你需要64个本机代码。
一个原因是你想要加载一个64位的本地dll,它不能加载到一个32位的进程中。例如,它不是。net dll。