Gas Saving Technique 20: Storage vs Memory read optimizations
Last updated
Last updated
In the realm of smart contracts, efficient gas usage is of the essence. An impactful method for economizing gas consumption is minimizing unnecessary storage reads, as reading from storage (using SLOAD
) is considerably costly in terms of gas. This tutorial aims to shed light on how to optimize storage reads to save gas.
Why Optimize Storage Reads?
Cost Efficiency: SLOAD
operations are expensive, costing around 100 gas per operation, while MLOAD
and MSTORE
operations are considerably cheaper at approximately 3 gas each. Therefore, reducing SLOAD
operations can lead to significant gas savings.
Optimized Performance: By caching storage variables in memory, you can enhance the contract's performance, making it more efficient and responsive.
Before Optimization:
After Optimization:
Identify Repeated Storage Reads: Look for any storage variables being read multiple times within a function, especially within loops.
Cache in Memory: Cache storage variables in memory if they are being read multiple times within the same function or scope, particularly in loops.
Test for Gas Savings: After making adjustments, test the function to verify that it is not only still working as expected but also using less gas.
Minimizing storage reads by caching storage variables in memory significantly aids in reducing gas consumption, leading to more efficient and cost-effective smart contracts. Adopt this practice consistently across your smart contracts to ensure you're developing gas-optimized, high-performance decentralized applications. Always remember to test your contracts thoroughly after implementing these optimizations to ensure they work as intended.