0

我刚买了一台新的 64 位计算机,但我仍在尝试了解 32 位和 64 位之间的区别。我了解使用 64 位依赖项构建的应用程序只能在 64 位上运行,但使用 32 位依赖项构建的应用程序可以在 32 位和 64 位系统上运行。

但是,还有其他区别吗?我知道有些程序有两种不同的 Windows 版本可供下载,一种用于 64 位,一种用于 32 位。为什么他们提供两种不同的类型?编译具有 64 位依赖项的程序以使程序在 64 位系统上运行是否会提高速度?

4

3 回答 3

1

除了速度,一些程序别无选择。它们需要与主机操作系统的位数完全匹配。

一个很好的例子是 TortoiseSVN,它安装了一个 shell 扩展。Shell 扩展是加载到其他进程中的 DLL。所以 TortoiseSVN 必须在 x64 系统上提供一个 64 位的 DLL,如果它想提供一个 shell 扩展。

驱动程序是第二个例子。

当谈到速度时,当然有区别。这在很大程度上取决于程序的作用。如果程序不需要高性能,则提供 x64 可执行文件对开发人员和用户都没有帮助,而且是浪费时间。

以下是导致 64 位操作系统上 32 位案例的性能差异的原因:

  1. 由于模式切换,内核调用成本更高
  2. 更多的寄存器,更高的代码大小:对于计算密集型程序,这非常有利于本机 64 位应用程序。对于其他类型的应用程序或商业风格的 Web 应用程序,较大的代码和指针大小可能会导致净损失(因此 64 位比 32 位慢!)
  3. 访问超过 3GB 的内存。这显然在 2012 年很少发挥作用。想想数据库,Photoshop,......
于 2012-10-17T22:54:46.030 回答
0

正如 usr 所说,速度的提高取决于应用程序的功能。但从根本上说,64 位 CPU 能够在相同的时间内处理两倍于 32 位的数据;但是这样做的机器指令是特定于 64 位处理器的,因此必须重新编译现有的本机程序(至少)才能显示出好处。

在 x86_64 的情况下,内存指针现在也是 64 位宽而不是 32 位,这意味着程序可以寻址更多的内存。但是,代码在磁盘和内存中占用大约两倍的空间;如果您使用的是内存不足的 64 位系统,则交换可能会更糟。

于 2012-10-17T23:13:26.180 回答
0

大多数语言的性能大致相同。

选择 64 位的主要原因是可寻址内存。A32 位进程只能访问 2 GB 的数据,但 64 位进程可以访问 18 quintillion 字节(这远远超过您可以放入机器的 RAM 量)。

于 2012-10-18T07:45:28.030 回答