我发现在使用1.3 GHz ARM Cortex-A53的平板电脑上运行Android基准测试时,64位编译比32位编译有明显的性能提升。最新版本通过Eclipse编译,并在运行时检测CPU是ARM,Intel还是MIPS,然后是32位或64位体系结构。
在以前的针对Intel CPU的Windows编译中,由于使用SSE类型的SIMD指令,64位工作可能比32位快得多。但是,后来的32位编译器具有向后不兼容的功能,其产生的代码几乎相同,速度也差不多。
以下是Android基准测试的详细信息,其中显示了A53以及通过1.2 GHz Cortex-A9获得的32位和64位结果。最后是一些汇编代码清单,用于标识所使用的不同指令。以下是结果摘要。
http://www.roylongbottom.org.uk/android%2064%20bit%20benchmarks.htm#anchorStart
磨刀石基准测试-(微小循环)相似的性能,总体额定值受使用EXP函数进行的测试编译的影响。
Dhrystone基准测试-最新的MIPS / MHz 1.09 32位,1.96 64位,1.10 A9-可能优化了64位。
Linpack基准测试-(N = 100)64位DP快1.97倍,SP 2.67倍-请参阅汇编代码。
Livermore Loops(24个内核)平均快1.5倍,范围是0.8到7.9倍
L1 / L2缓存和RAM测试
MemSpeed-浮点和整数计算-获得2.2倍的缓存,1.5倍的RAM。
BusSpeed-整数数据流和突发读取-流2.0 x L1、1.5 x L2、1.25 x RAM-突发2.6 x L1,类似L2和RAM。
RandMem-从相同的复杂索引结构进行串行和随机读取以及读取/写入-通常在读取时快一些,但读取/写入类似/慢一些。
然后是上述版本的MP版本,并尝试使用2.7 GFLOPS 32位和5.5 GFLOPS 64位的4个内核最大值来测量最大SP MFLOPS(MP-MFLOPS)。还有一个使用NEON内在函数的版本,其中64位编译器生成的替代指令的生成速度高达10.8 GFLOPS,而32位则为5.7-请参见程序集列表。我也有针对Windows 10和Android基于Intel Atom平板电脑的这些基准测试的版本-64位和32位Windows,32位Android-未完全实现的完整64位-64位Linux内核,但32位Android。
http://www.roylongbottom.org.uk/android%20benchmarks.htm
另外,我有32位和64位Linux / Intel版本。
罗伊·朗伯顿