美文网首页
solidity智能合约开发九:智能合约优化

solidity智能合约开发九:智能合约优化

作者: 雪飘千里 | 来源:发表于2019-02-21 02:44 被阅读0次

1、节约燃料

  • 1、uint压缩字节来减少gas,但是在struct 结构体中才有意义
    如果直接在合约中定义,反而会消耗更多的gas,因为以太坊cpu每次读取是以32个字节(256位)为最小单位;
    在结构体中之所以会节约gas,是因为结构体会压缩结构体中的数据到storage 的 slot中。

  • 2、结构体字节对齐
    结构体中uint类型定义的时候,同种类型的要挨在一起,并且是按照大小顺序排列;
    原因还是上面的,结构体会压缩结构体中的数据到storage 的 slot中,压缩的时候,同种类型的会紧密的压缩放在一起

  • 3、哈希表替换动态长度数组
    solidity中mapping,其实并不存储keys,只存储value,value是通过key hash 索引来找到的,所以 mapping并没有直接的获取keys 或者values方法(java 中Map 就有),但是以太坊基金会为我们提供了以uint为例子的遍历mapping的库https://github.com/ethereum/dapp-bin/blob/master/library/iterable_mapping.sol

image.png

可以看出,从mapping中获取value数据时,效率要比从数组中获取更加快速(数组需要遍历),从而节约gas

  • 4、view pure
    特别是在通过for循环获取需要的数据的操作,可以节省大量的gas

相关文章

网友评论

      本文标题:solidity智能合约开发九:智能合约优化

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