将多个小变量打包到单个字中
EVM 在 32 字节字长存储模型下运行。
可以将小于 32 个字节的多个变量打包到一个存储槽中,以最大程度地减少 SSTORE 操作码的数量。尽管 Solidity 自动尝试将小的基本类型打包到同一插槽 中,但是糟糕的结构体成员排序可能会阻止编译器执行此操作。
考虑下面的 Good 和 Bad 结构体。
好和坏结构体成员排序的实现示例
使用启用了优化的编译器:solc 0.5.9 + commit.e560f70d,第一个 doBad() 函数调用执行消耗约 60,000 Gas,而 doGood() 仅消耗约 40,000 Gas。注意是一个字长存储的差异(20,000 Gas),因为 Good 结构将两个 uint128 打包为一个字。
doBad 函数调用的执行成本为 60709 Gas
doGood 函数调用的执行成本为 40493 Gas
本帖 steem 首发
最近新帖
- 中法新约
- 齐桓公称霸过程九合诸侯
- 周平王迁都洛邑
- 武王利用对商纣怨恨不满鼓动起义
- 寒浞表面上对后羿极尽阿谀奉承
- 伏羲最大的贡献
- 八国联军侵华战争
- 太平天国运动的失败
- 收复台湾的斗争
- 郑成功收复台湾
- 戚继光抗倭
- 靖难之役
- 窝阔台灭亡金国
- 完颜阿骨打建立金国
- 萧太后治辽
- 朱全忠名不副实
- “诗仙”李白
- 李渊建立唐朝
- 北魏孝文帝迁都洛阳
- 王马共掌天下
- 诸葛亮七擒孟获
- 曹操煮酒论英雄
- 刘秀建立东汉
- 汉武帝独尊儒术
- 吕后临朝称制
- 项羽破釜沉舟
- 吕不韦迎异人归秦
- 完璧归赵
- 孟子宣讲仁政
- 范蠡功成身退
- 乱世雄才赵盾
- 齐鲁长勺之战
- 《诗经》问世
- 周文王求贤
- 尧舜禅让
- 勿慕彼
- 以力服人
- 人有私
- 名为恶
- 勿模糊
- 不确定的人称回复
- 勿饮酒
- 视勿移
- 忿自泯
- 贻亲羞
- 有余力
- 久必受其累
- 不计较个人得失
- 很强的处理事情的能力
- 当自砺
- 耳听未必为虚
- 勤俭节约
- 谦虚的态度
- 劝谏方法
- 晨则省
- 礼仪教化
- 世上无难事
- 言讳色媚
- 不规道亏
- 心非为恶
- 人善思齐
- 人称回复
- 箕踞摇髀
- 对待他人的父母如自己的父母
- 对孩子礼仪的培养
- 身体发肤,受之父母
- 亲好力具
- 呼喊召唤要即时回应
- 跟对领导很重要
- 缺坏就补
- 仁者多畏
- 事忙多错
- 劝解的艺术
- 乐于读书教子
- 猪肉价单月爆涨,恐【回民】增加
- 新一轮北京消费券增加一批发放平台
- 非常规动作,今日北京关闭所有公园景区
- 李国庆和俞渝被儿子告上法庭
- 邮寄选票会左右美国大选结果吗?
- 金融诈骗比尔盖茨的17岁天才少年?
- 新疆乌鲁木齐提升新冠疫情防控措施
- 反华斗士班农回炉特朗普大选操纵团队
- 失控的印度会不会超过美国疫情?
- 美国疫情更趋严重,恐延迟经济回暖
- 北京新发地新冠疫情二次爆发教训:戴口罩很重要
- 美国冠状病毒病例激增归咎于年轻人
- 杨超越毕业典礼崩溃式发言
- ipfs的未来值得期待
- 隐身的韩国瑜,让民进党丑态百出
- 特朗普政府阻挠博尔顿出版白宫回忆录
- 北京一餐馆7人确诊新冠肺炎,食品传播更恐怖
- 罢韩打开潘多拉魔盒,蓝绿恐陷以罢制罢恶斗
- 为何四家监狱出现隐瞒和武汉相关活动,造成500多例确诊?
#chinese #hnt #zzan #upfundme #actnearn #spt #lifestyle #steemleo #marlians #dblog #neoxian #aaa #palnet #liv #iv #creativecoin #mediaofficials #lassecash #cn