별은블로그
Solidity 4. 컨트랙 최적화 본문
보통 알고리즘을 평가할 때 빅오표기법을 사용한다.
하지만 솔리디티에서는 빅오보다 GAS가 중요하다.
- opcode마다 소비되는 가스가 다름
1. 컨트랙을 배포할 때의 비용
- 주석, 변수이름, 타입이름은 가스를 소모하지 않음
- 불필요한 코드정리 필요
2. 컨트랙 내의 함수를 불러올 때의 비용
- 비싼연산을 최대한 줄이기
- SSTORE : 비용이 비싸다. storage의 상태를 변경할 때마다 사용됨.
=> 해결법 : 로컬변수를 이용해서 계산을 다한 후 마지막에 storage변수를 변경한다.
- for문 사용횟수 최소화
- 문자를 저장할 때 bytes32 타입을 사용하는 것(고정된 크기의 배열)
=> 가스비 절약 : 이더리움가상머신은 32bytes 타입에 최적화 되어 있음(256bits에 맞춰져 있기 때문에)
3. 배열사용시 주의점
- 무제한 크기의 배열반복을 피해야함 -> 가스무한발생
- 반복문은 길이 50이하의 배열을 돌릴 때에 효과적이다.
- 크기 50이상을 사용해야 하는데 어떻게 하는가?
- 해결법 : 매핑을 사용한다.
- mapping(uint => Student) studentInfo;
- 데이터의 크기가 크지 않을 때에는 배열이 더 좋다.
'Dev > Solidity' 카테고리의 다른 글
Solidity 5_2. 트러플콘솔을 사용한 컨트랙배포 (0) | 2018.11.11 |
---|---|
Solidity 5_1. 트러플콘솔로 컨트랙배포하기 (0) | 2018.11.11 |
Solidity 3. 가스(GAS)와 옵코드(opcode)에 대해... (0) | 2018.11.05 |
Solidity 2. Solidity Smart Contract (0) | 2018.11.05 |
Solidity 1. 솔리디티의 기본문법 (0) | 2018.11.05 |
Comments