我最近从旧的 32 位版本升级到了 64 位操作系统 (Windows 7)。我注意到,虽然有多个应用程序可在 64 位中使用(例如 DC 客户端、Tortoise SVN、图形驱动程序),但许多应用程序仍然是 32 位应用程序(例如 Firefox、Adobe Reader)。
那么,拥有 64 位应用程序(性能方面)有多重要?我用笔记本电脑做很多不同的事情,比如玩游戏、编码等。
答案1
我认为 64 位应用程序本身并不是那么重要。
64 位应用程序的优点在于它可以:
- 访问更多内存¹
- 执行 64 位寄存器操作。²
¹ 64 位程序可能会更快一些(取决于其工作方式)。如果您的应用程序占用大量内存(例如 Photoshop、3D 渲染等),那么 64 位版本将使其能够访问计算机的所有内存。如果没有,它将被限制在 2GB 左右。这是每个应用程序因此两个应用程序总共可以访问 4GB。
² 在 64 位操作系统上执行 64 位操作比在 32 位操作系统上执行速度更快 - 执行相同的操作至少需要 2 个 32 位操作。
从稳定性角度来看,64 位和 32 位应用程序之间应该没有区别。
答案2
在 64 位操作系统上使用 64 位应用程序的最大好处是您可以完全访问系统上的所有可用内存。使用 64 位内存地址,应用程序可以访问比 32 位应用程序更多的内存。
此外,64 位程序比 32 位程序运行得“更好”,因为它们使用的是本机系统架构。诸如内存读取之类的操作都是本机执行的。这意味着操作系统不必做任何额外的工作来“翻译”(打包/解包内存等)应用程序正在使用的命令。
但是,大多数程序(例如 Firefox、Word、Adobe Reader 等)大部分时间都在等待用户输入,因此效率不一定是首要考虑因素。此外,大多数这些应用程序(目前)不需要升级到 64 位后可以获得的额外内存。
诸如图形驱动程序之类的程序确实必须高效运行,并且可能能够访问更高的内存寄存器,因此需要是 64 位的。
答案3
是的,您可以在 64 位操作系统上毫无问题地运行 32 位应用程序,但是。还有一个浪费空间的问题 - 库。基本上,应用程序会加载它所需的相应库,但问题是 64 位库与 32 位库不兼容,反之亦然。
当然,通常所需的库是随应用程序本身附带的,但核心库(Windows 库)存储两次,其中一个是 32 位,另一个是 64 位。
如果您同时运行一个 32 位应用程序和另一个 64 位应用程序,它们还会占用更多的 RAM 内存 - 这两个应用程序加载了自己版本的库,因此它们使用的 RAM 比使用同一个库时要多。
因此,为了节省 RAM 和硬盘空间,请尝试运行和安装仅 64 位的应用程序,如果找不到 64 位版本,则仅安装 32 位的应用程序。现在,越来越多的应用程序同时提供这两个版本。
答案4
请记住,在 64 位 Windows 上,32 位应用程序是通过称为WOW64,这确实施加了一些在 32 位 Windows 操作系统下运行时不存在的额外限制。
从https://msdn.microsoft.com/en-us/library/aa384219(v=vs.85).aspx:
WOW64 下的性能和内存消耗
- 处理器硬件。指令模拟在芯片上执行。在 x64 处理器上,指令由微架构本地执行。因此,x64 上的 WOW64 下的执行速度与 32 位 Windows 下的速度相似。在 Intel Itanium 处理器上,模拟涉及更多软件,因此性能会受到影响。
- API thunk 开销。与 NT 内核调用本身相比,此开销很小。NT 内核函数的调用频率不高。
- 虚拟内存大小。在 Intel Itanium 处理器上,如果同时运行同一 32 位应用程序的两个或多个实例,WOW64 会增加大量开销。这是因为 Intel Itanium 上的本机 8 KB 页面使 x86 架构上本机 4 KB 页面的模拟变得复杂(更多页面被标记为可写;所有可写页面都是进程专用的)。这可能会对某些处理器上终端服务的可扩展性产生不利影响。但 x64 处理器不会出现这种情况。
工作集。WOW64 增加了应用程序工作集的大小。
WOW64 使 32 位应用程序能够利用 64 位内核。因此,32 位应用程序可以使用更多的内核句柄和窗口句柄。但是,32 位应用程序在 WOW64 下可能无法创建与在基于 x86 的系统上本机运行时一样多的线程,因为 WOW64 为每个线程分配了一个额外的 64 位堆栈(通常为 512 KB)。此外,还为 WOW64 本身及其使用的数据结构保留了一些地址空间。保留的数量取决于处理器;Intel Itanium 上保留的数量比 x64 处理器上保留的数量多。