gpt4 book ai didi

c# - 移植应用程序时有效利用 64 位架构

转载 作者:行者123 更新时间:2023-11-30 17:10:33 28 4
gpt4 key购买 nike

我正在考虑将处理器密集型 32 位 .NET 4 (C#) 控制台应用程序移植到 64 位。它是一种并行化的数字运算算法,运行大约五个小时。

我对性能优势略有了解,但不确定如何更改代码以充分利用 64 位架构。例如,我是否应该考虑将所有 Int32 类型更改为 Int64 等?

我在哪里可以找到一些全面的资源来了解移植到 x64 时的优化注意事项?四处搜索主要是关于 x64 架构的一般信息。

最佳答案

您的辛勤工作获得返回的希望渺茫。 x64 内核的运行速度与 x86 内核相同,时钟速度相同并受硅物理特性的限制。 x64 内核的一个明显优势是它可以同时处理 64 位,是 x86 内核的两倍。但在实践中,很少有现实世界的问题实际上需要这个范围。大多数整数问题在 +/- 20 亿的范围内都能正常工作。从您的代码中很容易看出,如果您在最内层的循环中有很多 long 而不是 int 变量,那么您就会领先。

x64 核心的一个显着缺点是它消耗可用缓存的速度要快得多。这也受到硅的限制,它们只能在芯片上安装这么多内存。在 32 位模式下,任何指针都是双倍大小,8 字节而不是 4 字节。指针用于任何对象引用。缓存在现代内核上是一个非常的大问题,与内核的速度相比,内存总线非常慢。 x64 多了 8 个 cpu 寄存器(r8 到 r15),在某种程度上平衡了这个缺点。

最终效果是 32 位代码的执行速度通常比 64 位代码。只有当您的程序因必须将其处理的数据塞入 2 GB 地址空间而陷入困境时,您才能从 64 位代码中获益。换句话说,必须使用文件或内存映射文件来避免内存不足。如果您的应用程序受到计算限制,正如您的问题中所建议的那样,您不太可能领先。

关于c# - 移植应用程序时有效利用 64 位架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12051707/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com