मेरे पास निम्नलिखित है:

# a.php
for($i=1; $i<=5000000; $i++) {
    $arr = [];
    for($f = 1; $f <= 5; $f++) {
        $arr[$f] = 'a'; # <-- I am passing an index manually
    }
}

और इस:

# b.php
for($i=1; $i<=5000000; $i++) {
    $arr = [];
    for($f = 1; $f <= 5; $f++) {
        $arr[] = 'a'; # <-- Note that I am not passing an index manually
    }
}

b.php कोड a.php कोड से तेज़ क्यों है? ...

b.php में मैं मैन्युअल रूप से एक इंडेक्स पास नहीं कर रहा हूं, इसलिए PHP इसकी गणना करता है (क्या यह धीमा नहीं है?), और a.php एक परिभाषित पास करता है उस सरणी के लिए अनुक्रमणिका, इसलिए मैं इसके बारे में उलझन में हूँ

समय माप के लिए प्रयुक्त npm के gnomon पैकेज

~/$ php a.php | gnomon
   1.0981s   

     Total   1.0985s

~/$ php a.php | gnomon
   1.1350s   

     Total   1.1358s

~/$ php a.php | gnomon
   1.1664s   

     Total   1.1668s

~/$ php a.php | gnomon
   1.1105s   

     Total   1.1108s

~/$ php a.php | gnomon
   1.1074s   

     Total   1.1078s

~/$ php a.php | gnomon
   1.0969s   

     Total   1.0973s

~/$ php a.php | gnomon
   1.0872s   

     Total   1.0875s

~/$ php a.php | gnomon
   1.0992s   

     Total   1.0996s

और

~/$ php b.php | gnomon
   0.8960s   

     Total   0.8984s

~/$ php b.php | gnomon
   0.8859s   

     Total   0.8863s

~/$ php b.php | gnomon
   0.9031s   

     Total   0.9035s

~/$ php b.php | gnomon
   0.9078s   

     Total   0.9083s

~/$ php b.php | gnomon
   0.8880s   

     Total   0.8884s

~/$ php b.php | gnomon
   0.8945s   

     Total   0.8951s

~/$ php b.php | gnomon
   0.8891s   

     Total   0.8896s

~/$ php test.php | gnomon
   0.8843s   

     Total   0.8847s
1
Máxima Alekz 27 नवम्बर 2019, 22:20

1 उत्तर

सबसे बढ़िया उत्तर

पहले समाधान में, PHP को यह पता लगाना होगा कि नया मान सेट करने के लिए किस इंडेक्स का उपयोग किया जाना चाहिए और जांचें कि क्या हम मौजूदा तत्व को अपडेट करने जा रहे हैं या एक नया जोड़ रहे हैं।

b.php में नया तत्व हमेशा सरणी के अंत में रखा जाता है, अनुक्रमणिका की अतिरिक्त जांच की आवश्यकता नहीं होती है। यह मूल रूप से stack काम करता है।

3
kkreft 27 नवम्बर 2019, 22:47