2013-02-10 69 views
2

我头脑中的一些过早优化错误告诉我,我应该将现有的x86 C#应用程序移植到x64,因为它所依赖的非托管DLL的x64版本。我知道答案很可能是做这件事,测试并看看会发生什么,但我想看看通常会有什么好处。我在两到四年前发现了很多帖子,抱怨说x64 CLR速度比x86 CLR慢。x64的优点CLR

当人们可以预期加快x64代码时,哪些领域?除了需要超过2 GB的内存外,是否值得移植?我的代码主要是面向网络的,处理中等大小的字节数组和加密算法。

+0

downvoter会不会解释为什么他们低估了这个问题? +1来抵消它。 – Ameen 2013-02-10 06:42:58

+0

FWIW 32位大地址感知应用程序如果在64位操作系统上运行它,实际上会获得整个4 GB地址空间,因此这是一种让应用程序能够访问更多内存的简单方法。 – 2013-02-10 07:26:24

+0

这个问题很难回答,没有具体细节。 64位代码通常比32位代码慢,并且实际上只有几个原因需要移植,IMO:1)您需要的内存超过32位中提供的4GB,或者2)您有一位客户坚持你应该有一个64位版本,或者3)你需要与一个64位系统(例如,Office或Windows资源管理器扩展)交互。如果你没有明确的需要做这个港口,不要这样做;这意味着你有另一个测试和调试平台。 – 2013-02-10 07:27:23

回答

1

这个问题最简单的答案是配置32位和64位并比较它们。但是,既然你说你使用的是加密算法,如果你经常使用它们,我强烈推荐考虑使用64位。

加密算法通常对大于32位的值执行整数算术运算和/或逻辑运算,这些值在64位代码中变得更快。另外,它们通常可以利用处理器的扩展寄存器集(尽管某些超标量/缓存优化可能已经在某种程度上实现了这一点)比正常代码更多。

最后,除了在特定情况下测试它之外,没有办法告诉哪一个性能更好,但如果您使用的密码学库有64位版本,我相信这是值得的一枪。