我刚买了一台新的 64 位计算机,但我仍在尝试了解 32 位和 64 位之间的区别。我了解使用 64 位依赖项构建的应用程序只能在 64 位上运行,但使用 32 位依赖项构建的应用程序可以在 32 位和 64 位系统上运行。
但是,还有其他区别吗?我知道有些程序有两种不同的 Windows 版本可供下载,一种用于 64 位,一种用于 32 位。为什么他们提供两种不同的类型?编译具有 64 位依赖项的程序以使程序在 64 位系统上运行是否会提高速度?
我刚买了一台新的 64 位计算机,但我仍在尝试了解 32 位和 64 位之间的区别。我了解使用 64 位依赖项构建的应用程序只能在 64 位上运行,但使用 32 位依赖项构建的应用程序可以在 32 位和 64 位系统上运行。
但是,还有其他区别吗?我知道有些程序有两种不同的 Windows 版本可供下载,一种用于 64 位,一种用于 32 位。为什么他们提供两种不同的类型?编译具有 64 位依赖项的程序以使程序在 64 位系统上运行是否会提高速度?
除了速度,一些程序别无选择。它们需要与主机操作系统的位数完全匹配。
一个很好的例子是 TortoiseSVN,它安装了一个 shell 扩展。Shell 扩展是加载到其他进程中的 DLL。所以 TortoiseSVN 必须在 x64 系统上提供一个 64 位的 DLL,如果它想提供一个 shell 扩展。
驱动程序是第二个例子。
当谈到速度时,当然有区别。这在很大程度上取决于程序的作用。如果程序不需要高性能,则提供 x64 可执行文件对开发人员和用户都没有帮助,而且是浪费时间。
以下是导致 64 位操作系统上 32 位案例的性能差异的原因:
正如 usr 所说,速度的提高取决于应用程序的功能。但从根本上说,64 位 CPU 能够在相同的时间内处理两倍于 32 位的数据;但是这样做的机器指令是特定于 64 位处理器的,因此必须重新编译现有的本机程序(至少)才能显示出好处。
在 x86_64 的情况下,内存指针现在也是 64 位宽而不是 32 位,这意味着程序可以寻址更多的内存。但是,代码在磁盘和内存中占用大约两倍的空间;如果您使用的是内存不足的 64 位系统,则交换可能会更糟。
大多数语言的性能大致相同。
选择 64 位的主要原因是可寻址内存。A32 位进程只能访问 2 GB 的数据,但 64 位进程可以访问 18 quintillion 字节(这远远超过您可以放入机器的 RAM 量)。