He encontrado algunas mejoras significativas en el rendimiento de las compilaciones de 64 bits frente a 32 bits al ejecutar mis puntos de referencia de Android en una tableta con un ARM Cortex-A53 de 1.3 GHz. Los últimos se compilan a través de Eclipse y, en tiempo de ejecución, detectan si la CPU es ARM, Intel o MIPS, luego arquitectura de 32 bits o 64 bits.
En compilaciones anteriores de Windows para CPU de Intel, el funcionamiento de 64 bits podría ser mucho más rápido que el de 32 bits debido al uso de instrucciones SIMD de tipo SSE. Sin embargo, el compilador posterior de 32 bits, con incompatibilidad hacia atrás, produce prácticamente el mismo código y una velocidad similar.
Los detalles de los puntos de referencia de Android se muestran a continuación, mostrando resultados de 32 bits y 64 bits del A53 y a través de un Cortex-A9 de 1.2 GHz. Al final hay algunos listados de códigos de ensamblaje que identifican las diferentes instrucciones que se utilizan. A continuación se muestra un resumen de los resultados.
http://www.roylongbottom.org.uk/android%2064%20bit%20benchmarks.htm#anchorStart
Punto de referencia de Whetstone: (bucles pequeños) rendimiento similar, con una calificación general influenciada por la compilación de la prueba con funciones EXP.
Benchmark de Dhrystone: último MIPS / MHz 1.09 32 bit, 1.96 64 bit, 1.10 A9: quizás 64 bit más optimizado.
Benchmark de Linpack - (N = 100) 64 bit DP 1.97 x más rápido, SP 2.67 x - ver código de ensamblaje.
Livermore Loops - (24 granos) promedio 1.5 veces más rápido, rango 0.8 a 7.9 veces
Pruebas de caché L1 / L2 y RAM
MemSpeed - cálculos flotantes y enteros - gana cachés 2.2 x, RAM 1.5 x.
BusSpeed - transmisión de datos enteros y lectura de ráfaga - transmisión 2.0 x L1, 1.5 x L2, 1.25 x RAM - ráfagas 2.6 x L1, L2 y RAM similares.
RandMem: lectura y escritura en serie y aleatoria de la misma estructura de indexación compleja, generalmente un poco más rápido en la lectura pero lectura / escritura similar / más lenta.
Luego están las versiones MP de lo anterior e intenta medir el SP MFLOPS máximo (MP-MFLOPS) con un máximo de 4 núcleos de 2.7 GFLOPS 32 bit y 5.5 GFLOPS 64 bit. También hay una versión que usa intrínsecos NEON en la que el compilador de 64 bits genera instrucciones alternativas de hasta 10.8 GFLOPS frente a 5.7 a 32 bits - vea la lista de ensamblaje. También tengo versiones de estos puntos de referencia para Windows 10 y tabletas basadas en Android Intel Atom: Windows de 64 bits y 32 bits, Android de 32 bits, 64 bits completos no implementados completamente, kernel de Linux de 64 bits pero Android de 32 bits.
http://www.roylongbottom.org.uk/android%20benchmarks.htm
Además, tengo versiones de 32 bits y 64 bits de Linux / Intel.
Roy Longbottom