Solidity如何通过代码减少gas消耗

简介: Solidity如何通过代码减少gas消耗

我们知道,在以太坊上的交易gas是有上限的,因此也是比较昂贵的,特别是针对一些复杂业务的处理,随着业务数据的增长,有可能会导致gas超高,甚至业务无法进行操作。


之前专门写过文章来描述如何减少gas的细节内容,这里再为大家讲解一种通过代码中memory来大幅度减少gas使用。


首先先看下面示例代码:


pragma solidity ^0.5.10;
contract Test{
    struct User{
        uint age;
        uint balance;
        uint num;
    }
    User user;
    function initUser() public{
        user = User({age:20,balance:1000,num:1});
    }
    function setUser1() public {
        user.age = 30;
        user.balance = 20000;
        user.num = 2;
    }
    function setUser2() public {
        User memory temp = user;
        temp.age = 40;
        temp.age = 20001;
        user.num = 3;
        user = temp;
    }
}

在上述代码中,我们首先通过initUser方法来初始化一个User对象的数据,然后分别调用setUser1和setUser2两个方法。


你会发现,setUser1需要消耗36476gas,而setUser2只需要效果31595gas,它们的效果相同,消耗的gas却差了5000gas,如果User的字段增多,那么此差距会越来越大。


那么这两种写法的区别是什么呢?我们知道,区块链上的写操作是比较昂贵的,而setUser1进行了多次的写操作,而setUser2只进行了一次整体的写操作。因此,节省了相当大一部分的gas。



目录
相关文章
|
8月前
|
存储 Oracle 测试技术
《Solidity 简易速速上手小册》第6章:优化 Gas 消耗和性能(2024 最新版)(下)
《Solidity 简易速速上手小册》第6章:优化 Gas 消耗和性能(2024 最新版)
106 1
|
5月前
|
JavaScript 前端开发 iOS开发
学习强大的JavaScript一行代码,能够节省你的时间和代码量
这段内容介绍了25个实用的JavaScript一行代码技巧,涵盖复制内容到剪贴板、打乱数组、颜色值转换、计算平均值、检查数字奇偶性、数组去重、对象为空检测、字符串反转、日期计算、首字母大写、生成随机字符串、四舍五入、清除Cookie、检测暗黑模式等,帮助开发者提高效率并简化代码。
42 2
|
7月前
|
存储 安全 区块链
Solidity中如何优化智能合约的Gas消耗
Solidity中如何优化智能合约的Gas消耗
114 7
|
7月前
|
安全 区块链
以太坊网络中为什么要设置Gas上限
以太坊网络中为什么要设置Gas上限
81 6
|
7月前
|
存储 安全 区块链
智能合约中存储和计算效率漏洞
智能合约中存储和计算效率漏洞
46 6
|
8月前
|
存储 传感器 监控
《Solidity 简易速速上手小册》第6章:优化 Gas 消耗和性能(2024 最新版)(上)
《Solidity 简易速速上手小册》第6章:优化 Gas 消耗和性能(2024 最新版)
100 1
|
并行计算
R语言多线程使用方法,充分利用计算资源实现高效计算,缩短等待时间
R语言多线程使用方法,充分利用计算资源实现高效计算,缩短等待时间
|
存储 监控 算法
复杂度分析:如何分析、统计算法的执行效率和资源消耗
复杂度分析:如何分析、统计算法的执行效率和资源消耗
|
机器学习/深度学习 存储 算法
【入门篇】1 # 复杂度分析(上):如何分析、统计算法的执行效率和资源消耗?
【入门篇】1 # 复杂度分析(上):如何分析、统计算法的执行效率和资源消耗?
149 0
【入门篇】1 # 复杂度分析(上):如何分析、统计算法的执行效率和资源消耗?