Solidity-struct Gas优化

结构体状态变量两种初始化Data public _data0 = Data(123, 456, true);Data public _data1 = Data({ tokenId: 123, price: 456, state: true});Gas消耗对比// SPDX-License-Identifier: GPL-3.0pragma solidity >=0.7.0 <0.9.0;contract TestStruct { struct Data {

结构体

状态变量两种初始化

Data public _data0 = Data(123, 456, true);Data public _data1 = Data({tokenId: 123, price: 456, state: true});

Gas消耗对比

// SPDX-License-Identifier: GPL-3.0pragma solidity >=0.7.0 <0.9.0;contract TestStruct {    struct Data {        uint256 tokenId;        uint256 price;        bool state;    }    mapping(uint256 => Data) public Datas;    Data public _data0 = Data(123, 456, true);    Data public _data1 = Data({tokenId: 123, price: 456, state: true});    constructor() {}    //88227 gas    function SetData0(uint256 tokenId) external {        Datas[tokenId] = Data(tokenId, 123, true);    }    //88114 gas    function SetData1(uint256 tokenId) external {        Data storage data = Datas[tokenId];        data.tokenId = tokenId;        data.price = 123;        data.state = true;    }    //88301 gas    function SetData2(uint256 tokenId) external {        Datas[tokenId].tokenId = tokenId;        Datas[tokenId].price = 123;        Datas[tokenId].state = true;    }}
SetData1 88114 gas
SetData0 88227 gas
SetData2 88301 gas

建议

先声明storage变量,接收状态变量。

Data storage data = Datas[tokenId];data.tokenId = tokenId;

给TA打赏
共{{data.count}}人
人已打赏
区块链推广

XFS:协同区块链,助力电商发展

2021-11-23 8:22:54

区块链推广

NFT游戏-虚拟模拟区块链游戏Evolution Land

2021-11-23 8:22:56

重要说明

本站资源大多来自网络,如有侵犯你的权益请联系管理员 区块链Bi站  或给邮箱发送邮件834379394@qq.com 我们会第一时间进行审核删除。 站内资源为网友个人学习或测试研究使用,未经原版权作者许可,禁止用于任何商业途径!请在下载24小时内删除!


如果你遇到支付完成,找不到下载链接,或者不能下载,或者解压失败,先不要忙,加客服主的QQ:834379394 (客服有可能有事情或者在睡觉不能及时的回复您,QQ留言后,请耐心等待即可!)

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索