c# - 关于 32 位 .exe 与 64 位 .exe

标签 c# .net performance performance-testing

32 位或 64 位 .exe 的性能是否存在差异?还是您只是想在您想要的任何平台(32 位处理器或 64 位处理器)上运行您的应用程序。

我的意思是我有一个正在生成 32 位 .exe 的控制台应用程序。 当它进行太多计算时,它的执行速度非常慢,并且随着用户群的增加而增加。

如果我将其更改为 64 位 .exe,我是否会在较高级别上获得性能优势?

我知道我必须优化我的代码以获得最佳性能。

最佳答案

没那么简单,两种处理器架构(32位和64位)之间存在一定的差异。 如今,64 位系统正在成为标准,这是由于各种固有的优势以及它们能够轻松运行具有高内存要求的应用程序的能力。用简单的话来比较:

  • 64位系统可以处理更大的数据量

  • 每个进程在 64 位系统上可以分配更高的内存(理论上是 2^32 = 32 位中的 4 GB 和 2^64 = 64 位中的 16 艾字节 ).实际上一个进程受实际RAM大小的限制,在32位默认用户内存是2GB,最大可扩展到3GB,留给内核进程。即使在 64 GB 中,也不是所有操作系统都能够为每个进程映射那么多内存,不确定是否有任何消费者版本甚至达到每个进程 TB

  • 64 位系统有更多的硬件优化空间

  • 64 位系统可以同时运行更多应用程序而不会导致内存不足问题

  • 即使 64 位操作系统也是独立的,以充分利用处理器功能

  • 32 位系统可以正常运行在 64 位系统上,在 windows 中使用类似 WOW(Windows on Windows)的技术,但反之则不可行。然而,这种运行受到限制,它无法利用 64 位系统的所有优势。这些进程可以在任务管理器中轻松识别,因为它们包含 *32 和名称

关于性能,没有经验法则,但如您所知,如果进程由于内存不足而变慢,那么 RAM 中没有足够的空间供进程执行,这会导致频繁的分页进出进程,从而使其相对较慢,当完全在内存中时,在 64 位系统上会快得多

检查以下链接,它们有很多相关且准确的信息:

32 vs 64 bit FAQ

How To Geek - 32 vs 64 bit

Taking mystery out of 64 bit

Difference between 32 and 64 bit OS

关于c# - 关于 32 位 .exe 与 64 位 .exe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33406613/

相关文章:

c# - 单独程序集中的 MVVM Light ViewModelLocator?设计时模式问题

grails - 使用 Hudson 监控 Grails 性能

c# - 在对象上使用 BinaryWriter

c# - ConnectionMultiplexer 的 dispose() 方法不会刷新所有键和它连接到的 redis 数据库吗?

c# - Override Sealed 是有效的,但为什么在 C# 中不使用 Virtual Sealed?

.net - JWT 中 ValidateIssuer 和 ValidateAudience 的含义是什么?

c# - 如何解决 “does not contain a definition for ' ToObservableCollection'”错误?

c# - 在 C# 中找到直线与 X 轴的最小角度

c++ - vector<bool> 和数组之间的性能差距

performance - 64 位操作系统中 Tomcat 的负载平衡