EVMのmemory gas cost
EVMのMemoryは利用サイズに応じてgas costが増加する。具体的にどの程度の値になるのかを調べたので記事に残しておく。
なお、gas costの詳細な計算式は以下の公式サイトを参照
github.com
ChatGPTを用いてグラフにしてみた結果が以下の通り。
公式にも記載のある通り、memoryの利用サイズが724byteまでは線形に増加する。32byte毎に 3gas ずつ増加と考えてよい。
724byteを超えると緩やかな指数関数増加になる。
具体的な比較として、1024byteと10KB(10240)の時のgas costを計算すると以下の通り。
- 1024 = 98gas
- 10KB = 1160gas
10lkb程度だとそこまで違いがないが、線形よりも少し多めに消費することがわかる。1024byteのデータを10個分一度にメモリに乗せるよりは10回に分けて乗せたほうが少しだけコストが安くなる。
とはいえ、メモリ管理はSolidityのコンパイラーが行うので通常は気にする必要はない。
※Solidityコンパイル時のoptimizerはメモリのgas cost最適化も行ってたりするのだろうか?