For apps that use 64-bit arithmetics intensively, the improvement is obvious. But generally most don't need 64-bit arithmetic operations so the main improvement is on the new ARMv8 architecture. It's a completely refresh architecture with newer features, so even without 64-bit the performance is still higher. It's like Intel's core architecture which has much lower clock speed but works much faster than the old Pentium 4 on Netburst architecture.
ARMv8 AArch64's new features:
New instruction set, A64
Has 31 general-purpose 64-bit registers.
Has separate dedicated SP and PC
Instructions are still 32 bits long and mostly the same as A32 (with LDM/STM instructions and most conditional execution dropped).
Has paired loads/stores (in place of LDM/STM)
Most instructions can take 32-bit or 64-bit arguments.
Addresses assumed to be 64-bit.
Advanced SIMD (NEON) enhanced
Has 32× 128-bit registers (up from 16), also accessible via VFPv4.
Supports double-precision floating point
Fully IEEE 754 compliant
AES encrypt/decrypt and SHA-1/SHA-2 hashing instructions also use these registers.
A new exception system
Fewer banked registers and modes
Memory translation from 48-bit virtual addresses based on the existing LPAE, which was designed to be easily extended to 64-bit
For most non-memory intensive programs, the performance would probable increase due to the double number of registers (in fact more than double, since ARMv7 and below include SP, PC... in the register set). You can look at the benchmark here
ARMv8 is 64-bit, so that's the way Apple and others must go even if they don't want, or they'll have to introduce their own architecture and rewrite all the platform. All future ARM CPU will also 64-bit