Gas 优化大师课存储优化待验证:冗余操作

待验证:冗余操作

分析

  • 冗余初始化成本:将变量初始化为其默认值,例如将bool变量设置为falseuint256将变量设置为0,会引入不必要的操作,从而消耗额外的 gas。

  • 默认值:在 Solidity 中,未初始化的bool变量默认为falseuint256变量默认为0。了解这些默认值可以使代码更简洁、更省油。

  • 其他冗余操作:重复的赋值、未使用的函数等;

测试

文件位置:

src/storage/InitDefault.sol
test/storage/InitDefault.t.sol

测试结果:

forge test --gas-report --mt test_init_ -vvv --optimize

待验证:冗余操作图示

结果显而易见,编译器已经足够优秀了。

总结

  1. 识别冗余初始化:扫描智能合约,查找初始化为默认值的变量。

  2. 删除冗余初始化:当您打算将变量设置为默认值时,请省略变量的显式初始化。

  3. 测试:进行严格的测试,以确保删除显式初始化不会影响合约的预期行为,同时有助于节省少量 gas。

对应源码

本文配套代码固定到提交 8960383;Gas 数据会随编译器、优化器参数和 EVM 版本变化。