我知道这.NET
是JIT
编译你只是在应用程序运行之前运行的架构,但确实为64位架构的JIT编译器优化呢?
在编写将运行的应用程序时,是否有任何需要完成或考虑的事项64bit system
?(即使用Int64会提高性能吗?JIT编译器会自动使Int64在32位系统上运行吗?)
该64位JIT是不同的,从一个为32位,所以我希望在输出一定的差异-但我不会切换到64位只是为了这一点,我不会期望获得多少速度(如果有的话)的CPU时间通过切换到64位.
如果您的应用程序使用大量内存并且PC有足够的RAM来跟上它,您会注意到性能的大幅提升.我发现当你使用大约1.6gb时,32位.NET应用程序倾向于开始丢失内存异常,但是由于之前的分页很长时间它们开始捶打磁盘- 所以你结束了I/O绑定.
基本上,如果你的瓶颈是CPU,那么64位不太可能有所帮助.如果你的瓶颈是记忆,那么你应该看到一个很大的进步.
将使用Int64提高性能,JIT编译器是否会自动使Int64在32位系统上运行
Int64已经可以在32位和64位系统上运行,但它在64位运行速度更快.因此,如果您主要使用Int64进行数字运算,那么在64位系统上运行应该会有所帮助.
最重要的是衡量你的表现.
这是一篇关于这个主题的好文章,由一位参与64位JIT工作的人撰写.基本上,除非你绝对需要64位可以提供的地址空间,或者需要进行64位数学运算,否则你可能会失去性能.例如,随着指针的增大,缓存有效减半.
我注意到64位速度慢得多.
如前所述,64位JIT编译器的行为与x86 JIT编译器的行为不同.x86编译器将利用x64编译器没有的一些优化.
例如,在.NET 3.5中,32位JIT将使用结构作为参数内联函数调用,但64位JIT不会.
在生产代码中,我看到x86构建的运行速度比x64构建快20%(没有其他更改)