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。



目录
相关文章
|
27天前
|
运维 算法 决策智能
基于可靠性评估序贯蒙特卡洛模拟法的配电网可靠性评估研究(Matlab代码实现)
基于可靠性评估序贯蒙特卡洛模拟法的配电网可靠性评估研究(Matlab代码实现)
145 0
|
10月前
|
Web App开发 编解码 Linux
像素流送的这些问题困扰你了吗?
使用UE引擎开发的模型在移动端或网页推流时,像素流送是常见选择。然而,在实际应用中,用户经常遇到各种问题。小芹整理了网上关于像素流送的常见问题,分为两大类:一是使用过程中遇到的技术难题,二是对某些功能的实现和可行性不清楚。本文将详细探讨这些问题,帮助开发者更好地理解和解决像素流送中的常见问题。
312 3
|
存储 Kubernetes 调度
k8s常见的排错指南Node,svc,Pod等以及K8s网络不通问题
k8s常见的排错指南Node,svc,Pod等以及K8s网络不通问题
4783 1
|
存储 关系型数据库 MySQL
MySQL删除数据 文件大小不变的原因以及处理空洞问题
总之,MySQL中删除数据后文件大小不变的现象是由于InnoDB存储引擎的设计决策,旨在优化性能和空间的重用。处理这一问题需要综合考量数据库的使用场景以及可能的性能影响,选择合适的策略
1214 6
|
数据采集 人工智能 监控
赌你一定想要!OpenDataLab首款大模型多模态标注平台Label-LLM正式开源
Label-LLM 是一款专为大模型训练设计的多模态文本对话标注工具,支持团队协作,让标注工作变得简单高效。它不仅涵盖丰富的任务类型,如回答采集、偏好收集和内容评估等,还支持多模态数据标注,包括图像、视频和音频。Label-LLM具备预标注载入功能,能大幅提升工作效率,并提供全方位的任务管理与可视化分析,确保标注质量。快来体验这款强大的标注平台吧![部署文档](https://github.com/opendatalab/LabelLLM)
2465 0
赌你一定想要!OpenDataLab首款大模型多模态标注平台Label-LLM正式开源
|
数据采集 Web App开发 iOS开发
自定义User-Agent:使用Python Requests进行网络请求
自定义User-Agent:使用Python Requests进行网络请求
|
存储 人工智能 自然语言处理
大模型时代还需要知识图谱么?新一代知识图谱语义框架SPG赋能企业数智化转型
本文以商家经营和风险防控为例,介绍了在企业数字化中的图谱应用。结合当前产业应用和研究进展,本文梳理总结了LLM、KG 在企业数字化中的可能应用。
大模型时代还需要知识图谱么?新一代知识图谱语义框架SPG赋能企业数智化转型
|
数据格式 Python
python对NOAA天气数据格式转换
python对NOAA天气数据格式转换
|
数据采集 自然语言处理
【预训练语言模型】RoBERTa: A Robustly Optimized BERT Pretraining Approach
【预训练语言模型】RoBERTa: A Robustly Optimized BERT Pretraining Approach
1223 0
【预训练语言模型】RoBERTa: A Robustly Optimized BERT Pretraining Approach