함수에서 스토리지 액세스 방지 - 1
그러나 항상 그런 것은 아니며 메모리에 복사할 때 몇 가지 추가 단계가 필요한 상황이 있을 수 있습니다.
이 사례는 다른 게시물에서 실험해 보겠습니다.
이제 일반적인 경우에 초점을 맞추겠습니다. 다음 계약을 고려하십시오.
contract varReferencing_1{
uint iterations = 10;
uint public sum;
function addItem() external {
for(uint i; i < iterations; i++) { // reference from storage
sum++; // updating storage
}
}
}
contract varReferencing_2{
uint iterations = 10;
uint public sum;
function addItem() external {
uint _iterations = iterations; // creating a copy in memory
uint _sum = sum; // creating a copy in memory
for(uint i; i < _iterations; i++) { // reference from memory
_sum++; // updating in memory
}
sum = _sum; // updating in storage
}
}
varReferencing_1과 varReferencing_2는 모두 똑같은 일을 하고 있습니다. 유일한 차이점은 varReferencing_1의
addItem()
가 저장소에서 직접 액세스하고 varReferencing_2에서 메모리에 복사본을 만든 다음 액세스한다는 것입니다.결과:
varReferencing_1
addItem()
varReferencing_2
addItem()
관찰:
메모리 액세스를 사용하는 동안 가스 소비가 줄어듭니다.
Reference
이 문제에 관하여(함수에서 스토리지 액세스 방지 - 1), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/rushanksavant/avoiding-storage-access-in-functions-5fdb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)