2012-08-11 10 views
8

से अधिक मेमोरी स्पेस लेती है वर्तमान में मेरा ऐप लगभग 7 एमबी मेमोरी का उपयोग करता है।विशाल सरणी

यदि मैं इसे strlen(serialize($array)))) के साथ आकार की जांच करता हूं तो सरणी 700 KB का उपयोग करने लगती है।

  • उपयोग अगर मेरे अनुप्रयोग के भीतर इस सरणी, और स्मृति के उपयोग की जांच (memory_get_peak_usage() के साथ) मैं 14 एमबी मिलता है।

  • यदि मैं इसका उपयोग नहीं करता, तो मुझे 7 एमबी मिलती है।

यदि यह सरणी 700 केबी सीरियलाइज्ड लेती है, तो PHP को इस चर के लिए 7 एमबी की आवश्यकता क्यों है? या क्या मैं बेंचमार्क गलत तरीके से कर रहा हूं?

+1

इस सरणी/वस्तु में क्या है? स्मृति में वास्तविक वस्तुओं का प्रतिनिधित्व करने से पाठ संस्करण के लिए आवश्यकतानुसार कहीं अधिक आवंटन हो सकता है। – Brad

+0

सभी utf8 वर्णों और उनके ASCII समकक्षों की एक तालिका। ठीक है, लेकिन 10 गुना अधिक ?? – ellabeauty

+1

क्या होगा यदि आप 'memory_get_usage' का उपयोग करते हैं? 'memory_get_peak_usage' आपको 'पीक' उपयोग – zerkms

उत्तर

10

यदि आप इससे परेशान हैं तो आप PHP से दूर भागना चाहते हैं: http://nikic.github.com/2011/12/12/How-big-are-PHP-arrays-really-Hint-BIG.html। कुछ जीवित स्थान की तरह PHP सरणी।

जब संभव हो तो आप SplFixedArray का उपयोग कर सकते हैं, लेकिन फिर फिर से कौन सी स्पेस एक PHP सरणी लेता है। यदि आप स्वच्छ/प्रदर्शन सामग्री की तलाश में हैं तो आप पहले स्थान पर PHP का उपयोग क्यों कर रहे हैं (हाँ यह एक PHP लड़के से आ रहा है) :)

+1

@brad tnx! शनिवार की रात को सवालों के जवाब देने पर मुझे आपके जैसे लोगों की आवश्यकता है: डी – PeeHaa

+0

धन्यवाद, मैं अपनी सरणी को "स्प्लफिक्स्डएरे" में बदलने की कोशिश करूंगा, लेकिन इसमें काफी समय लगेगा :) – ellabeauty

+2

@ पेट्रा, कोई समस्या नहीं! अब हमें केवल एक स्टैक ओवरफ्लो पीने का खेल चाहिए ... – Brad

1

सीरियलाइज्ड प्रारूप कुछ मेमोरी ऑप्टिमाइज़ेशन कर सकते हैं क्योंकि उन्हें ऑब्जेक्ट रखने की आवश्यकता नहीं है स्मृति में मौजूद है और इसे पूरी तरह से सुलभता है। वे केवल डेटा की अखंडता रखते हैं, न कि इसकी पहुंच। यदि यह आपके प्रश्न का उत्तर देने में मदद करता है।

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