Tutorial·7 min का पठन·Solingo द्वारा

Solidity में Gas-Efficient Loops कैसे लिखें

Loop optimization तकनीकें जो आपके smart contract की execution cost को 50% तक कम कर सकती हैं।

# Solidity में Gas-Efficient Loops कैसे लिखें

Ethereum पर हर operation की कीमत होती है। Loops को optimize करना production-grade smart contracts के लिए जरूरी है।

सबसे महंगी गलतियाँ

// ❌ महंगा — हर iteration में storage read

for (uint i = 0; i < array.length; i++) {

total += array[i];

}

समस्या: .length हर बार storage से पढ़ा जाता है। 100 items = 20,000+ extra gas।

Optimization #1: Cache Array Length

// ✅ बेहतर

uint len = array.length;

for (uint i = 0; i < len; i++) {

total += array[i];

}

बचत: ~200 gas प्रति iteration।

Optimization #2: Unchecked Arithmetic

Solidity 0.8+ में overflow checking automatic है, लेकिन loops में अक्सर जरूरी नहीं:

uint len = array.length;

for (uint i = 0; i < len;) {

total += array[i];

unchecked { ++i; }

}

बचत: ~30-40 gas प्रति iteration। 1000 iterations = 40,000 gas बचत।

Optimization #3: Pre-Increment vs Post-Increment

// ❌ i++ — temporary copy बनाता है

// ✅ ++i — direct increment

Gas difference छोटा है (~5 gas), लेकिन best practice है।

Optimization #4: Reverse Loops

जब order matter नहीं करता:

uint len = array.length;

for (uint i = len; i > 0;) {

unchecked { --i; }

// array[i] के साथ काम करें

}

फायदा: i > 0 check करना i < len से सस्ता है।

Optimization #5: Avoid Redundant Storage Writes

// ❌ महंगा

for (uint i = 0; i < 10; i++) {

stateVar += i; // 10 SSTORE operations

}

// ✅ बेहतर

uint temp = stateVar;

for (uint i = 0; i < 10; i++) {

temp += i;

}

stateVar = temp; // 1 SSTORE operation

बचत: ~20,000 gas प्रति avoided SSTORE।

Real-World Example: Token Distribution

function distributeTokens(address[] calldata recipients, uint amount) external {

uint len = recipients.length;

for (uint i = 0; i < len;) {

_transfer(msg.sender, recipients[i], amount);

unchecked { ++i; }

}

}

100 recipients के लिए: ~150,000 gas बचत optimized vs unoptimized।

जब Optimize न करें

  • 10 से कम iterations वाले loops में marginal gains
  • Readability sacrifice करके complex optimizations
  • Premature optimization — पहले profile करें

Testing

Hardhat gas reporter से measure करें:

await contract.processArray(largeArray);

// Gas used: 450,234 (before optimization)

// Gas used: 287,156 (after optimization)

निष्कर्ष

Loop optimization में:

  • Array length cache करें
  • Unchecked arithmetic इस्तेमाल करें
  • Storage reads/writes minimize करें
  • Gas reporter से validate करें
  • Production contracts में ये techniques 30-50% gas savings दे सकती हैं।

    Practice में लगाने के लिए तैयार हैं?

    Solingo पर interactive exercises के साथ इन concepts को apply करें।

    मुफ्त में शुरू करें