Performance 32位与64位操作系统的模块化计算
我不知道CPU规格如何影响性能。我正在运行一个应用程序,在Windows平台上使用以下参数执行模块化计算(DH密钥交换): 模化:素数=4096位 发电机:2 指数:256位 当应用程序在32位Windows7上运行时,使用2.4GHz处理器和4G RAM,需要3-4秒。但是,当我在64位Windows7上以相同的处理器速度和8G RAM运行相同的应用程序时,需要1-2秒Performance 32位与64位操作系统的模块化计算,performance,cryptography,biginteger,diffie-hellman,modular-arithmetic,Performance,Cryptography,Biginteger,Diffie Hellman,Modular Arithmetic,我不知道CPU规格如何影响性能。我正在运行一个应用程序,在Windows平台上使用以下参数执行模块化计算(DH密钥交换): 模化:素数=4096位 发电机:2 指数:256位 当应用程序在32位Windows7上运行时,使用2.4GHz处理器和4G RAM,需要3-4秒。但是,当我在64位Windows7上以相同的处理器速度和8G RAM运行相同的应用程序时,需要1-2秒 我试图理解,但我搞不清楚模块化计算速度是否受ARM大小或CPU支持(64位与32位)的影响。64位CPU在大整数运算中比32
我试图理解,但我搞不清楚模块化计算速度是否受ARM大小或CPU支持(64位与32位)的影响。64位CPU在大整数运算中比32位CPU快得多。我的经验是具有相同代码的因子2和具有专门代码的因子4
- 在用x86编写的代码中,许多中间值都有64位。例如,如果将两个32位整数相乘,则得到64位,然后需要将其相加,最后移位为32位整数 与x86(32位)CPU相比,AMD64(64位)CPU具有更大的寄存器和更多的寄存器。因此,这些中间值适合于单个寄存器,编译器不需要将两个32位寄存器缝合在一起,就可以得到c中64位整数的外观。额外的寄存器意味着您需要更少地使用堆栈 在32位模式下,这样的代码在同一CPU上的性能提高了大约两倍
- 另一个重要区别是AMD64(64位)支持64x64->128位乘法,而x86(32位)仅支持32x32->64位乘法。这个大的乘法大约是两倍的昂贵,但却是四倍的 如果编写使用128位整数保存中间值的代码,则会导致另一个因子2的加速