Coût de gaz relatif de la carte vs BIGMAP
1 réponses
- votes
-
- 2020-01-29
Découvrons. Nous commençonsparexécuter unnœud Sandbox. Nous allonsprovenir de deux contrats,unpour les cartes,l'autrepour Bigmap.
paramètre (paire Adresse NAT); stockage (adresse BIG_MAP NAT); code { Disperser; Disperser; Plonger {quelque}; METTRE À JOUR; Opérationnulle; PAIRE; };
(Ceciest la version Big_MAP,la version de la carteest lamême avec letype "BigMap"modifiéen "carte").
première différence,la version de la carteprend
0.361 Tez
dans lagravure d'originepar rapport à0.391 Tez
pour la version BigMap.Nous allons utiliser unpetit programme Pythonpourgénérer des adressesfactices,
genadd.py
#!/usr/bin/python3 Importationbase58,aléatoire Imprimer (base58.b58encode_check (B '\ x06 \ xa1 \ x9f' + octets ([aléatoire.getrandbits (8) pouri dans laplage (0,20)])). Décode ('ASCII'))
Nous appelons le contrat comme:
Tezos-Client Transfert 0 àpartir debootstrap1 à Bench_map --arg '(paire "' '
./genadd.py'" 0) '-D --burn-cap 0.031
Le capuchon degravureest 0,031et 13363 degazest consommé.
En contrastes,pour le Bigmap,le capuchon degravurenécessaireest de 0,067et la consommation degazest de 13395. Avantage: Carte.
Deuxièmeinsertion: Les capuchons degravure sontinchangés,13395gazpour le Bigmap,maismaintenant,14285gazpour la carte.
Alors,vous l'avez. Unefois que lepremier élémentestinséré,il devientessentiel d'utiliser un BigMappar opposition à une carte.
Regardons untroisième élément de curiosité. Lesbouchons de combustion sontinchangés,legaz de la carteest de 15231et dugazpour le BigMapestinchangé à 13395.
De celaest clair quepour chaque élément de la carte,nous ajoutonsenviron 900 au coût dugaz. Cela ajoute rapidement.
Cependant,cebenchmarkne montrepastout! Si vous souhaitezn'abandonner qu'une seuletouche,le BigMapest clairementmeilleur,mais si vous souhaitez accéder àtoutes les clés,ou denombreuses clés,la cartepourrait êtremeilleure.
Let's find out. We start by running a sandbox node. We'll originate two contracts, one for maps, the other for bigmap.
parameter (pair address nat); storage (big_map address nat); code { UNPAIR; UNPAIR; DIP { SOME }; UPDATE; NIL operation; PAIR; };
(this is the big_map version, the map version is the same with the type "bigmap" changed to "map").
First difference, the map version takes
0.361 tez
in origination burn compared to0.391 tez
for the bigmap version.We'll use a small python program to generate dummy addresses,
genadd.py
#!/usr/bin/python3 import base58, random print(base58.b58encode_check(b'\x06\xa1\x9f' + bytes([random.getrandbits(8) for i in range(0,20)])).decode('ascii'))
We call the contract as:
tezos-client transfer 0 from bootstrap1 to bench_map --arg '(Pair "'
./genadd.py'" 0)' -D --burn-cap 0.031
The burn cap is 0.031 and 13363 of gas is consumed.
In contrasts, for the bigmap, the burn cap needed is 0.067 and the gas consummed is 13395. Avantage: map.
Second insertion: burn caps are unchanged, 13395 gas for the bigmap, but, now, 14285 gas for the map.
So there you have it. After the first element is inserted, it becomes gas-sparing to use a bigmap as opposed to a map.
Let's look at a third element out of curiosity. Burn caps are unchanged, gas for the map is 15231 and gas for the bigmap is unchanged at 13395.
From this is becomes clear that for each element in the map, we add about 900 to the gas cost. This adds up quickly.
However, that benchmark does not show everything! If you want to access only one key, clearly the bigmap is better, but if you wanted to access all of the keys, or many keys, the map might be better.
-
Super description,mercibeaucoup!Est-il réalisable d'avoirplusieursbig_maps dans un contrat ou BIG_MAP à l'intérieur d'un Big_MAP?Awesome Description, Thanks a lot! is it feasible to have multiple big_maps in a contract or big_map inside a big_map ?
- 0
- 2020-04-06
- CryptoScroller
-
1.Multiple Big_maps: Oui.2. BIG_MAP de BIG_MAP: Non.1.Multiple big_maps: YES. 2. big_map of big_map: NO.
- 1
- 2020-05-12
- Daly
Est-ce qu'ilexiste une référence deperformance réalisteentre la carte/Bigmap?
Je cherche unpoint debasculement oùil seraitplus logique d'utiliser unegrande cartepour l'optimisation des coûts degaz