What is the primary advantage of using calldata over memory for external function parameters in Solidity?