Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> PHP

PHP में FOR vs FOREACH Performance Comparison


PHP में for और foreach loops के performance characteristics और कब कौन सा उपयोग करें।

मूल अंतर

  • for - Index-based, manual control, slightly faster for numeric arrays
  • foreach - Iterator-based, cleaner syntax, copies array by default (PHP 7 तक)

Performance Test Code

<?php
$arr = range(1, 100000); // 100k elements

// Test 1: foreach by value (copies array in PHP < 7)
$start = microtime(true);
foreach ($arr as $v) { $v += 1; }
echo "foreach (value): " . (microtime(true) - $start) . "s\n";

// Test 2: foreach by reference (modifies original, no copy)
$start = microtime(true);
foreach ($arr as &$v) { $v += 1; }
echo "foreach (ref): " . (microtime(true) - $start) . "s\n";

// Test 3: for loop
$start = microtime(true);
for ($i = 0, $len = count($arr); $i < $len; $i++) {
    $arr[$i] += 1;
}
echo "for loop: " . (microtime(true) - $start) . "s\n";

// Test 4: foreach read-only (no modification)
$start = microtime(true);
foreach ($arr as $v) { /* read only */ }
echo "foreach (read): " . (microtime(true) - $start) . "s\n";

Typical Results (PHP 8.x, 100k elements)

Loop TypeTimeNotes
for (cached count)~2.5msसबसे तेज़ numeric arrays के लिए
foreach (by reference)~3.0msModification के लिए अच्छा
foreach (by value, read)~2.8msPHP 7+ में copy-on-write, fast
foreach (by value, modify)~5.0msPHP < 7 में full copy, slow

PHP Version Differences

  • PHP 5.x: foreach हमेशा array copy करता है → slow for large arrays
  • PHP 7+: Copy-on-write optimization → read-only foreach fast
  • PHP 8+: Further optimizations, JIT compilation benefits

कब क्या उपयोग करें

ScenarioRecommendedकारण
Simple iteration (read-only)foreachClean, readable, fast enough
Array modification neededforeach (... as &$v)Direct modification, no copy
Numeric index manipulationforIndex control, reverse, step
Associative array iterationforeachKeys access आसान
Performance critical (millions)for या foreach &$vMicro-optimization
Multi-dimensional arraysforeachNested foreach natural

महत्वपूर्ण: Reference Cleanup

<?php
$arr = [1, 2, 3];

foreach ($arr as &$v) {
    $v *= 2;
}
unset($v); // महत्वपूर्ण! $v अभी भी last element को reference करता है

// बिना unset के:
$v = 999; // $arr[2] भी 999 हो जाता है!
print_r($arr); // [2, 4, 999] - Bug!

Modern PHP (8.1+) Alternatives

// array_map - functional, immutable
$doubled = array_map(fn($x) => $x * 2, $arr);

// array_walk - in-place modification
array_walk($arr, fn(&$v) => $v *= 2);

// Generator for memory efficiency
function processLargeArray(iterable $data) {
    foreach ($data as $item) {
        yield $item * 2;
    }
}

निष्कर्ष

अधिकांश मामलों में पठनीयता के लिए foreach उपयोग करें। Performance critical code में ही for या reference-based foreach पर विचार करें। Premature optimization से बचें।

  1. पीसी पर हेलो इनफिनिट को सर्वश्रेष्ठ प्रदर्शन के लिए ऑप्टिमाइज़ करें पीसी पर हेलो इनफिनिट को सर्वश्रेष्ठ प्रदर्शन के लिए ऑप्टिमाइज़ करें

    हेलो इनफिनिट पीसी सेटिंग्स की तलाश में हैं जो हेलो इनफिनिट प्रदर्शन को बढ़ाएं? इस गाइड में, हमारे पास कुछ सुझाव हैं जो आपको हेलो इनफिनिट खेलते समय अपने पीसी पर सर्वश्रेष्ठ प्रदर्शन प्राप्त करने में मदद कर सकते हैं। हेलो इनफिनिट आजकल ट्रेंडिंग गेम्स में से एक है। इसके पूर्ण संस्करण हाल ही में जारी कि

  1. पीसी पर हेलो इनफिनिट को सर्वश्रेष्ठ प्रदर्शन के लिए ऑप्टिमाइज़ करें पीसी पर हेलो इनफिनिट को सर्वश्रेष्ठ प्रदर्शन के लिए ऑप्टिमाइज़ करें

    हेलो इनफिनिट पीसी सेटिंग्स की तलाश में हैं जो हेलो इनफिनिट प्रदर्शन को बढ़ाएं? इस गाइड में, हमारे पास कुछ सुझाव हैं जो आपको हेलो इनफिनिट खेलते समय अपने पीसी पर सर्वश्रेष्ठ प्रदर्शन प्राप्त करने में मदद कर सकते हैं। हेलो इनफिनिट आजकल ट्रेंडिंग गेम्स में से एक है। इसके पूर्ण संस्करण हाल ही में जारी कि

  1. अपने विंडोज 10 पीसी को बूस्ट करें: विशेषज्ञ प्रदर्शन ट्यूनिंग टिप्स अपने विंडोज 10 पीसी को बूस्ट करें: विशेषज्ञ प्रदर्शन ट्यूनिंग टिप्स

    ग्रह पर किसी भी अन्य मशीन की तरह हर विंडोज पीसी को रखरखाव की आवश्यकता होती है। अंतर यह है कि मशीनों को हार्डवेयर रखरखाव जैसे ऑयलिंग और ग्रीसिंग की आवश्यकता होती है, कंप्यूटर को सॉफ्टवेयर रखरखाव की आवश्यकता होती है। रखरखाव या ऑप्टिमाइजेशन के बिना, पीसी धीमा हो जाता है और प्रतिक्रिया देने में समय लेता