Windows 32位操作系统上的32位程序和64位操作系统上的32位程序有什么区别?

Windows 32位操作系统上的32位程序和64位操作系统上的32位程序有什么区别?,windows,32bit-64bit,32-bit,Windows,32bit 64bit,32 Bit,在我的电脑中,它在64位处理器上运行32位操作系统。因此,所有安装的应用程序都是32位的,我的计算机有2GB的RAM。如果我在安装64位操作系统的同时保留相同的32位应用程序,这会提高性能吗??还是有什么缺点?64位的优点是应用程序可以使用超过2gb的虚拟内存。如果您有超过4gb的ram,并且您的应用程序需要使用超过2gb的内存(sql server!),那么可能会有一个性能内存(因为它可以在内存中存储更多页面,而不是从磁盘读取页面) 如果情况并非如此,并且您拥有相同的内存量,那么您的性能将不会

在我的电脑中,它在64位处理器上运行32位操作系统。因此,所有安装的应用程序都是32位的,我的计算机有2GB的RAM。如果我在安装64位操作系统的同时保留相同的32位应用程序,这会提高性能吗??还是有什么缺点?

64位的优点是应用程序可以使用超过2gb的虚拟内存。如果您有超过4gb的ram,并且您的应用程序需要使用超过2gb的内存(sql server!),那么可能会有一个性能内存(因为它可以在内存中存储更多页面,而不是从磁盘读取页面)

如果情况并非如此,并且您拥有相同的内存量,那么您的性能将不会得到提高,也可能会略有下降(假设您在这里使用windows),因为要处理在64位操作系统上工作的32位应用程序,会发生复杂的重定向系统(应用程序请求system32并发送到syswow64)-其中有些很简单,但有些像com注册查找会导致许多注册表打开(对不存在的clsid执行regopen,并查看使用procmon代表您生成的内核数!)


因此,除非你有一个非常具体的用例,听起来好像你没有,否则它不会更快

谈论32位和64位软件意味着开发这种软件是为了利用32位或64位寄存器大小的CPU

寄存器是处理单元直接用于临时保存操作结果(变量类型)的内存(不是RAM)的一小部分,例如,当对两个数字求和时,ALU从两个寄存器读取、执行操作并将答案写入另一个寄存器。这些寄存器越大,它可以处理的值就越大。32位处理器的寄存器可以处理高达32位的值,而64位处理器可以处理比基于32位的处理器大一倍的数字,而基于32位的处理器 结果多出2^32个值

32位操作系统是指在具有32位CPU寄存器的机器上执行CPU操作的操作系统;64位操作系统可以在64位处理器上正常工作,但不能在32位处理器上正常工作,因为它们的寄存器对于这样的操作系统来说太小了

当程序在操作系统上运行时,32位应用程序将在64位操作系统上运行(大多数情况下是这样),尽管它们只使用所需CPU寄存器的一半,这仅仅是因为该程序的设计目的不是处理大于2^32位的值:这意味着运行在64位操作系统上的32位应用程序将在没有任何特定性能改进的情况下运行。此外,64位应用程序永远不会在32位操作系统上运行,因为它需要比实际可用资源更多的资源


希望我足够清楚和正确,几年前我研究了处理器架构…

这适用于x86/x86\u 64上的64位应用程序:

  • 64位系统将消耗更多的RAM,最重要的是缓存,因为指针越大。如果存在大量指针,这可能是性能瓶颈
  • 64位系统将提供两倍多的寄存器,两倍大。这使得在寄存器中存储更多变量成为可能,这将提高性能

因此,选择可能取决于您决定对哪个应用程序进行基准测试。

这不是一个编码问题。。。但是:如果您的计算机只有2 GB RAM,那么使用64位Windows肯定没有任何好处…@ThomasKrojer,除非它在x86/x86_64的情况下对较大的寄存器文件有用。@ThomasKrojer确实,可以在64位模式下运行CPU,并使用32位地址。@diapir:这不是问题:OP问,如果他在只有2GB ram的64位操作系统上使用32位软件时有好处。答案是:没有好处。@ThomasKrojer我在详细阐述用户关于x64上更大的寄存器文件(16个寄存器vs 8个寄存器)的随机评论时指出,x64代码可以运行得更快,坚持32位地址空间可以进一步提高性能。因此,实际的答案是,这要视情况而定,对于只有2Go内存的计算机来说,很有可能由于交换而导致性能恶化。但同样,这取决于使用情况。