2012-10-14 16 views
6

उदाहरण:एपीसी धारावाहिक धीमा?

$arr = array(); 

for($i = 5; $i < 300000; $i++) 
    $arr[$i] = 'foo'; 

apc_store('data', $arr); 

यह 15 सेकंड की तरह लगता है। डेटा प्राप्त करने के लिए यह लगभग 0.7 लेता है।

लेकिन यदि मैं PHP के साथ डेटा को क्रमबद्ध करता हूं और apc_store('data', serialize($arr)); के साथ इसे स्टोर करता हूं तो इसमें केवल 1 सेकंड लगता है।

धारावाहिक डेटा प्राप्त करने के लिए और फिर इसे unserialize, यह 0.6s

की तुलना में थोड़ा अधिक समय लगता है क्यों एपीसी इतनी धीमी गति से है?

+0

'apc_store()' '__sleep()' फ़ंक्शन ट्रिगर करता है, है ना? यदि यह सत्य है, तो [फ़ंक्शन serialization से पहले चलाया जाता है] (http://php.net/manual/en/oop4.magic-functions.php)। शायद वह दक्षता पर कटौती। ऐसा लगता है कि 'apc_store()' मौजूदा प्रविष्टियों को ओवरराइट करता है ... दिया गया है कि मैं अभी भी PHP सीख रहा हूं इसलिए मैं रास्ता बंद कर सकता हूं। – Rob

+0

@ माइकड्रिक: एपीसी क्रमबद्धता का उपयोग नहीं करता है। यह सिर्फ पूरे 'zval' संरचना (सी स्तर पर) की प्रतिलिपि बनाता है। – Crozin

+0

@ क्रोज़िन रुको, क्या? क्या यह 'apc_store()' '__sleep()' ट्रिगर करने के संबंध में है? क्या यह गलत है? – Rob

उत्तर

2

apc_sma_info() एक दिलचस्प जानकारी प्रदान करता है, जो शायद समझा सकता है कि ऐसा क्यों होता है।

Array 
(
    [0] => Array 
     (
      [size] => 608 
      [offset] => 33152 
     ) 

    [1] => Array 
     (
      [size] => 5589032 
      [offset] => 11211992 
     ) 

    [2] => Array 
     (
      [size] => 2175976 
      [offset] => 31378408 
     ) 
) 

जबकि उन्हें serializing मैन्युअल का उत्पादन:

एक गैर धारावाहिक डेटा के साथ निष्पादित apc_store() मेरे लिए सूचकांक निम्न मान का उत्पादन block_lists में,

Array 
    (
     [0] => Array 
      (
       [size] => 11178232 
       [offset] => 33760 
      ) 

     [1] => Array 
      (
       [size] => 1210040 
       [offset] => 16801024 
      ) 

     [2] => Array 
      (
       [size] => 15542104 
       [offset] => 18012280 
      ) 
    ) 

यह उत्सुक है, लेकिन ऐसा लगता है कि मैनुअल सीरियलाइजेशन के साथ, एपीसी सामग्री के बेहतर स्वभाव के साथ, बड़े ब्लॉक में डेटा के पहले और अंतिम टुकड़े विभाजित करता है।

कुछ मामूली प्रतीत नहीं होता है क्योंकि मैंने इस परीक्षण को दो बार चलाया और मुझे हर बार इसी तरह के परिणाम मिलते हैं।

संबंधित मुद्दे