Solidity

uint之間的gas成本差異和映射(uint => uint)

  • November 14, 2018

例如,當將一個大整數映射到某個整數時,

uint[] index;
index.length = 1000000;
index[600001] = 4;

使用更便宜嗎

mapping(uint => uint) index;
index[600001] = 4;

? 使用的一個好處uint[]是它可以被刪除,恰好在我工作的 dApp 中很有用。

它們將是相同的,只是進行了一次修改。

你會去

uint[1000000] index;
// index.length = 1000000; not needed

您使用的動態索引僅比建議的固定長度數組稍微貴一點,因為它需要另一個 32 字節的字來表示數組長度以及設置它的額外步驟。

這兩種方法都使用一個 32 字節的密鑰來指向一個 32 字節的字。這兩種方法都將避免不必要的寫入,並且在尚未寫入的索引中值預設為 0。

這兩種方法都沒有從降低指向的值的精度(比如說,uint8)中受益,因為 32 字節的字是它們可以定址的最小空間。

希望能幫助到你。

引用自:https://ethereum.stackexchange.com/questions/62377