-
-
Save IllIllI000/ec23a57daa30a8f8ca8b9681c8ccefb0 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// SPDX-License-Identifier: MIT | |
pragma solidity ^0.8.7; | |
/** | |
* @title GasTestStorageInMapping | |
* @author IllIllI | |
*/ | |
contract GasTestStorageInMapping { | |
struct Foo { | |
uint x; | |
uint a; | |
uint y; | |
uint b; | |
uint z; | |
} | |
mapping(uint=>Foo) data; | |
constructor() { | |
data[100] = Foo({x:0,a:1,y:0,b:2,z:0}); | |
} | |
// 25988 gas (optimizer 200), 26590 gas (optimizer off) | |
function bad_6eP(uint idx) external view returns (uint){ | |
uint a = data[idx].a; | |
a *= 2; | |
uint b = data[idx].b; | |
return a + b; | |
} | |
// 25946 gas (optimizer 200), 26547 gas (optimizer off) | |
function good_H7A(uint idx) external view returns (uint) { | |
Foo storage f = data[idx]; | |
uint a = f.a; | |
a *= 2; | |
uint b = f.b; | |
return a + b; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment