Solidity
uint之間的gas成本差異和映射(uint => uint)
例如,當將一個大整數映射到某個整數時,
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 字節的字是它們可以定址的最小空間。希望能幫助到你。