Приращение контура

Это очень простая техника, которую многие из нас, возможно, используют, не подозревая о ее газоэффективности.

Рассмотрим следующие контракты:

contract Inc1{
    uint[] public arr = [0,1,2,3,4,5,6,7,8,9,10];
    uint total;

    function something() external {
        uint sum;
        uint[] memory _arr = arr;
        for (uint i; i < _arr.length; i += 1) {
            sum += _arr[i];
        }
        total = sum;
    }
}

contract Inc2{
    uint[] public arr = [0,1,2,3,4,5,6,7,8,9,10];
    uint total;

    function something() external {
        uint sum;
        uint[] memory _arr = arr;
        for (uint i; i < _arr.length; i++) {
            sum += _arr[i];
        }
        total = sum;
    }
}
Войти в полноэкранный режим Выход из полноэкранного режима

Оба контракта имеют функцию something, которая итерирует массив для суммирования всех элементов. Но разница заключается в стиле инкремента циклов. Inc1 имеет i +=1, а Inc2 имеет i++.

Inc1

Inc2

Оцените статью
Procodings.ru
Добавить комментарий