# Gas消耗统计

By [point](https://paragraph.com/@point) · 2022-05-03

---

对常规操作的gas消耗有个概念，不求网上的精确计算，只是有个基础的概念

统计完之后感觉极度不准

1.  空函数, 21186 gas
    
        // SPDX-License-Identifier: MIT
        pragma solidity ^0.8.0;
        contract TestMap{
            function set1()  external {}
        }
        
    
2.  加变量
    
        一个变量，408 gas
        function set1(uint8 a)  external {}
        两个变量，721 gas
        一个bytes[] memory 2196 gas
        一个bytes[] calldata 1030 gas
        一个uint[] calldata 750 gas
        
    
3.  函数内部执行操作
    
        function set1() pure external {
                uint a=1+1;//13 gas
            }
        换成uint a=10324132421421424+143214214;gas费用相同
        
        //赋值storage，22114 gas
        uint a;
            function set1() external {
                a=10324132421421424;
            }
        //在增加个address成员地址 22167 gas
        
        //storage变量的计算，2307 gas
        uint a=1;
            function set1() view external {
                uint c=a+1;
            }
        
    
4.  操作map
    
        22192 gas
        mapping(uint=> uint) public resultMap;
            function set1() external {
                resultMap[1]=2;
            }
        
    
5.  转账eth
    
        transfer/call 9380 gas 不是说好的固定2300么
        function set1(address to) payable external {
                payable(to).transfer(msg.value);
        }
        call 9586 gas
        
    
6.  调用别的contract的函数 4493 gas
    
7.  keccak256+abi.encode 863 gas 根据内容多少gas变化

---

*Originally published on [point](https://paragraph.com/@point/gas)*
