アルゴリズムとかオーダーとか

仕事で勉強したことなどをまとめてます

EVMのmemory gas cost

EVMのMemoryは利用サイズに応じてgas costが増加する。具体的にどの程度の値になるのかを調べたので記事に残しておく。

なお、gas costの詳細な計算式は以下の公式サイトを参照
github.com


ChatGPTを用いてグラフにしてみた結果が以下の通り。

gas_cost_graph


公式にも記載のある通り、memoryの利用サイズが724byteまでは線形に増加する。32byte毎に 3gas ずつ増加と考えてよい。
724byteを超えると緩やかな指数関数増加になる。

具体的な比較として、1024byteと10KB(10240)の時のgas costを計算すると以下の通り。

  • 1024 = 98gas
  • 10KB = 1160gas

10lkb程度だとそこまで違いがないが、線形よりも少し多めに消費することがわかる。1024byteのデータを10個分一度にメモリに乗せるよりは10回に分けて乗せたほうが少しだけコストが安くなる。

とはいえ、メモリ管理はSolidityのコンパイラーが行うので通常は気にする必要はない。

※Solidityコンパイル時のoptimizerはメモリのgas cost最適化も行ってたりするのだろうか?