// SPDX-License-Identifier: MIT
pragma solidity 0.8.20;
contract StorageUnOptimized {
struct User {
uint256 id;
string name;
uint256 lastSee;
}
constructor() {
users[0] = User(0, "tom Doe", block.timestamp);
}
mapping(uint256 => User) public users;
function reSecondsAgo(uint256 _id) public view returns (uint256) {
//User memory _user = users[_id]; //gas 7928
User storage _user = users[_id]; //gas 2984
uint256 lastSeen = block.timestamp - _user.lastSee;
return lastSeen;
}
}
大家考虑下,如果对mapping 做循环处理呢?