Gaz Optimizasyonu (Array / Mapping)

Gaz Optimizasyonu (Array / Mapping)

Gaz Optimizasyonda array ve mapping karşılaştırması üzerine kısa bir yazı.

·

2 min read

Solidity ile yazılan kodları ilk incelediğinizde, kod yapılarının çok kısa ve net olduğunu göreceksiniz. Bunun nedeni EVM üzerinde yazdığınız sözleşmeleri oluşturan her kod parçasının bir gaz bedelinin olmasıdır. Gaz bedellerine ilişkin temel rakamlara şu linkten ulaşabilirsiniz.Bu yazıda sizlere array ve map kullanımında ortaya çıkan gaz maliyetlerine ilişkin uygulamalı bir örnek sunacağım.

Mapping mi yoksa Array mi ?

Hemen dinamik bir array yazalım

uint[] public array;

GAZ: 137857

Basit bir mapping yazalım.

mapping(uint => uint) public balances;

GAZ: 152982

Dinamik bir array, mapping’ten daha ucuzdur diye bilir miyiz?

Bir de fonksiyonlar yoluyla üzerlerinde çalışma yapalım.

Dinamik array için basit bir fonksiyon yazalım.

uint[] public array;

function usearray(uint item) public  {
   array.push(item);

}

GAZ: 164125

Mapping için basit bir fonksiyon yazalım.

mapping(uint => uint) public balances;

function addClass(uint x, uint y) public {
         balances[x]=y;
}

GAZ: 172791

Dinamik bir array, mapping’ten daha ucuzdur diye bilir miyiz?

usearray fonksiyonunu kullanarak array’e bir değer ekleyelim.

İlk eklenen değerinin gaz maliyeti 75823

sonrasında eklenen her değerin yaklaşık gaz maliyeti 56158

addClass fonksiyonunu kullanarak mapping’e bir değer çifti ekleyelim.

İlk eklenen değer çiftinin gaz maliyeti 50733

sonrasında eklenen her değer çiftinin yaklaşık gaz maliyeti 50733

Görüldüğü üzere, dinamik arraylere değer eklemeye veya diğer işlemleri yapmaya başladığımızda gaz maliyeti mappinglere göre artmaktadır.

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.15;

contract Optimization {

uint[] public array;
function usearray(uint item) public  {
   array.push(item);
   }

mapping(uint => uint) public balances;
function addClass(uint x, uint y) public {
         balances[x]=y;
}
}

Did you find this article valuable?

Support Buildchain by becoming a sponsor. Any amount is appreciated!