Gas 优化大师课编译器优化条件优化:使用 ! 代替 == 判断

条件优化:使用 ! 代替 == 判断

分析

布尔值本质上表示truefalse。直接将它们与truefalse进行比较是多余的,而且稍微浪费 Gas。与其使用if (booleanValue == true),不如直接使用if (booleanValue)。对于错误检查,可以使用if (!booleanValue)而不是if (booleanValue == false)

优点包括:

  1. **气体效率:**避免直接比较可以节省一些气体,因为在 EVM 中执行的操作码更少。

  2. **代码清晰度:**直接使用布尔值通常会产生更易读、更简洁的代码。

测试

文件位置:

src/compiler/Not.sol
test/compiler/Not.t.sol

测试结果:

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

条件优化:使用 ! 代替 == 判断图示

总结

  1. 识别布尔比较:检查您的智能合约以使用布尔比较来定位== false

  2. 使用逻辑非:用!true代替== false比较,以在每次操作中节省少量气体。

  3. 测试:实施彻底的测试,以确保变更在节省 gas 的同时保持预期的合同行为。

对应源码

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