美文网首页gas优化
gas优化: 避免对storage变量进行反复写入

gas优化: 避免对storage变量进行反复写入

作者: 梁帆 | 来源:发表于2022-11-06 14:19 被阅读0次

这是一个常见的优化方法,就是避免对storage的变量进行反复读写,如下两个合约所示:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.7;

contract A {
    uint state = 0;

    function addTimes() external {
        for(uint i = 0; i < 100; i++) {
            state++;
        }
    }
}

contract B {
    uint state = 0;

    function addTimes() external {
        uint t = state;
        for(uint i = 0; i < 100; i++) {
            t++;
        }
        state = t;
    }
}

两个合约做的核心操作是storage变量state累加100次。在A合约中,每一次累加,都是直接对state进行写入;而B合约中,是先定义了一个栈变量t,先对t进行累加,累加完成后赋值给state。gas消耗量统计如下:

合约 写入方式 gas消耗量
A 反复写入 117531
B 最后写入 75445

可以发现,这个gas消耗量差别还是比较大的。所以在工作中要注意这类的gas优化。

相关文章

  • gas优化: 避免对storage变量进行反复写入

    这是一个常见的优化方法,就是避免对storage的变量进行反复读写,如下两个合约所示: 两个合约做的核心操作是st...

  • Java多线程与并发

    1. volatitle volatitle对共享变量进行同步。在写入volatitle变量值之后,CPU缓存中的...

  • 1 SQL查询优化

    SQL语句优化 对查询进行优化,要尽量避免全表扫描。在 where 或 order by 的列上加索引。 尽量避免...

  • 关于指针

    关于指针 1. 程序对变量的读写操作,实际上是对变量所在的存储空间进行写入或取出数据。 2. 通过变量名引用变量,...

  • High cardinality下对持续写入的Elasticse

    High cardinality下对持续写入的Elasticsearch索引进行聚合查询的性能优化 背景 最近使用...

  • (转)SQL避免全表扫描,SQL 优化

    (转)SQL避免全表扫描,SQL 优化 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 orde...

  • sql语句优化

    避免全表扫描的sql优化 对查询进行优化,应尽量避免全表扫描,首先应考虑在where 及order by 涉及的列...

  • 代码优化

    优化代码的目的:提高运行速度; js代码优化: 代码重用 避免全局变量(全局变量,封闭空间,模块化,mvc..) ...

  • Java中常见面试题一(中等)

    Java中常见面试题一(中等) SQL语句优化有哪些?数据库的优化怎样优化? 对查询进行优化,应尽量避免全表扫描,...

  • 转载:SQL语句性能优化

    SQL语句性能优化 1, 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及...

网友评论

    本文标题:gas优化: 避免对storage变量进行反复写入

    本文链接:https://www.haomeiwen.com/subject/mcfutdtx.html