I have found some significant performance gains of 64 bit compilations vs 32 bit on running my Android benchmarks on a tablet using a 1.3 GHz ARM Cortex-A53. The latest are compiled via Eclipse and, at run time, detect whether the CPU is ARM, Intel or MIPS, then 32 bit or 64 bit architecture.
On previous Windows compilations for Intel CPUs, 64 bit working could be much faster than 32 bit due to using SSE type SIMD instructions. However, the later 32 bit compiler, with backward incompatibility, produces virtually the same code and similar speed.
Details of the Android benchmarks are in the following, showing 32 bit and 64 bit results from the A53 and via a 1.2 GHz Cortex-A9. At the end are some assembly code listings that identify different instructions being used. Below is a summary of results.
Whetstone Benchmark - (tiny loops) similar performance, with overall rating influenced by compilation of test using EXP functions.
Dhrystone Benchmark - latest MIPS/MHz 1.09 32 bit, 1.96 64 bit, 1.10 A9 - maybe 64 bit over optimised.
Linpack Benchmark - (N=100) 64 bit DP 1.97 x faster, SP 2.67 x - see assembly code.
Livermore Loops - (24 kernels) average 1.5 times faster, range 0.8 to 7.9 times
L1/L2 Cache and RAM Tests
MemSpeed - float and integer calculations - gains caches 2.2 x, RAM 1.5 x.
BusSpeed - integer data streaming and burst reading - streaming 2.0 x L1, 1.5 x L2, 1.25 x RAM - bursts 2.6 x L1, similar L2 and RAM.
RandMem - serial and random read and read/write from same complex indexing structure - generally a little faster on reading but similar/slower read/write.
Then there are MP versions of the above and attempts to measure maximum SP MFLOPS (MP-MFLOPS) with 4 core maximum of 2.7 GFLOPS 32 bit and 5.5 GFLOPS 64 bit. There is also a version using NEON intrinsics where the 64 bit compiler generates alternative instructions at up to 10.8 GFLOPS vs 5.7 at 32 bits - see assembly listing.
I also have versions of these benchmarks for Windows 10 and Android Intel Atom based tablets - 64 bit and 32 bit Windows, 32 bit Android - full 64 bit not fully implemented - 64 bit Linux kernel but 32 bit Android.
Plus, I have 32 bit and 64 bit Linux/Intel versions.