c# - .NET (C#) 中 64 位应用程序的性能优势

标签 c# .net performance optimization 64-bit

我正在将一个复杂的算法从 32 位移植到 64 位,在我的 Core i5 机器上计算大约需要 5 个小时,该机器具有 8GB 内存,运行 Windows 7 64 位。

该应用程序以 .NET 4 为目标,将任务并行库用于大约 60% 的循环并使用 BigInteger 类。

我正在处理两个数字范围:

  • 0 到 ulong.MaxValue(算法的大约 50%)。
  • 具有数十万位的非常大的整数(约占算法的 50%)。

对这些数字执行的运算包括加法、减法、乘法、除法、对数和幂。

一旦移植到 64 位,我将能够对代码进行分析和计时以查看性能提升,但我想知道我是否可以通过计算来估计它。

如果是这样,请推荐一些解释相同的文章。

最佳答案

我不确定您要移植什么(除非混合了 native 代码)。如果您已经有一台 64 位机器,只需确保您的目标是 64 位运行时(默认的 AnyCPU 会这样做)。

具体的性能改进将取决于您的算法的性质。对于可能给您一个数量级的测量,请参见

Why is this faster on 64 bit than 32 bit?

您能看到的最好情况是 2 倍,但您的实际改进可能远低于此。

另一方面,64 位代码占用更多内存(地址是 64 位的)。如果由于 JIT 代码所需的内存增加而迁移到 64 位恰好迫使您开始交换,则整体性能可能会下降。

关于c# - .NET (C#) 中 64 位应用程序的性能优势,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11731304/

相关文章:

c# - 字典 ForAll/ForEach 方法

performance - HTML5 视频性能

mysql - 用专业数据库替换核心数据以提高性能

c# - C#中的队列同步和操作

c# - 报表查看器可以从表单传递图像吗?

c# - 事务和事务范围之间的区别

c# - Microsoft.Http.HttpClient,在重定向时正确发送 HTTP 身份验证参数

c# - 如何在 C++/Cli 中使用可等待对象

c# - 如何拆分数组列表?

mysql - 增加对mysql的同时请求数