You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Moving loop invariant codes out from loop can save gas.
In the following demo, it can save 765 units of gas when the length of arr is 100.
function test1(uint256[] calldata arr) public {
for(uint256 i = 0; i < arr.length; i++) {
}
}
function test2(uint256[] calldata arr) public {
uint256 len = arr.length;
for(uint256 i = 0; i < len; i++) {
}
}
In function _applyFractionsAndTransferEach in lib/OrderFulfiller.sol, orderParameters.offerer and orderParameters.conduitKey are not changed in loop.
Initializing variables before the loop instead of inside the loop can also save gas. In the example below, function test4 consumes 553 units less gas than function test3 when the length of arr is 100.
function test3(uint256[] memory arr) public {
for(uint256 i = 0; i < arr.length; i++) {
uint256 a = arr[i];
}
}
function test4(uint256[] memory arr) public {
uint256 a;
for(uint256 i = 0; i < arr.length; i++) {
a = arr[i];
}
}
The text was updated successfully, but these errors were encountered:
Moving loop invariant codes out from loop can save gas.
In the following demo, it can save 765 units of gas when the length of arr is 100.
In function _applyFractionsAndTransferEach in lib/OrderFulfiller.sol, orderParameters.offerer and orderParameters.conduitKey are not changed in loop.
Initializing variables before the loop instead of inside the loop can also save gas. In the example below, function test4 consumes 553 units less gas than function test3 when the length of arr is 100.
The text was updated successfully, but these errors were encountered: