java wrote:The only place you would have an advantage from 64 bit code, would be in video procesesing, but only if you had 4 or more gigabytes of RAM, so best option would be to utilise the NEON extension that is available and as far as I can tell under utilised.
Please stop repeating this incorrect information about 4GB of RAM. The ability to access 64-bit addresses is actually one of the less interesting parts of going 64-bit and not a requirement of accessing the benefits. The real benefits of Aarch64 code are: an improved instruction set, twice as many general purpose (and NEON 128-bit) registers, improved pipelining due to removal of conditional execution and a few others I'm probably forgetting.
The single most interesting benefit of going 64-bit for the Raspberry Pi community is the dramatically improved C/C++ compiler output. I finally got my hands on a Raspberry Pi3 and tested it against a DragonBoard410c running 64-bit Linux. They both have the same 1.2Ghz ARM Cortex-A53 processors. I did some testing of floating point code (25 different functions) that fits in the cache (to rule out differences in memory sub-systems). For my optimized NEON code (intrinsics for portability), running in 64-bit mode gained 0-25% depending on the complexity of the code. They should all have been close to 0%, but the 32-bit version GCC 4.9 doesn't always turn NEON intrinsics into good code; it didn't always do well with instruction scheduling. The real mind blowing part was the straight C code performance. In some cases, the 64-bit version performed 3x faster than the 32-bit version. The compiler has more registers to work with and does a better job keeping all local variables in registers. I assume most people are not like me (I always write ASM/intrinsic code for time-critical functions) and would benefit greatly from the C/C++ compiler generating dramatically faster code. This would speed up the Linux kernel, all apps and interpreted languages (e.g. Python) as well since they depend on compiled code somewhere underneath.