64位版本构建的程序是否总是比32位快?
两者都在64位计算机上执行。
由于
答案 0 :(得分:3)
这取决于程序正在做什么。
如果它是一个国际象棋引擎,例如,使用了bitboard representation的棋子放置和移动,那么我希望它比32位版本更快 。< / p>
对于其他计算密集型应用程序,它应该更快,因为x86-64处理器可以使用额外的寄存器。
然而,对于所有程序都不是这样,例如,如果问题是内存密集型并且从文件系统读取内存,那么64位版本可能由于I / O而变慢。
答案 1 :(得分:3)
在大多数情况下,是的,确实如此。 64位程序可以享受更多的CPU寄存器,更大的地址空间(即使程序实际上不需要超过2GB,也可以加速堆上的内存分配)因此堆管理更容易处理堆碎片。
但在某些情况下它也可能更慢,主要是因为64位二进制文件通常更大,并且比32位对应文件占用更多的内存。每个指针需要8个字节而不是4个。这可能会导致重要数据是否适合CPU缓存。如果它是在紧密计算循环中使用的数据,它可以使速度差异。然而,“正常”程序几乎不会遇到这个问题。
答案 2 :(得分:0)
x86-64应该比x86-32更快。
__fastcall
。传递给函数的前四个参数通过寄存器传递。如果可以的话,总是使用64位。