2013-01-29 16 views
6

मेरे पास कक्षा में एक अनुभाग था जिसे मैंने एक नए में विभाजित करने का निर्णय लिया।

जब मैंने कोड अनुभाग को एक नई कक्षा में पोर्ट किया था तो मैंने देखा कि यह फोरच लूप में से एक को निष्पादित करने में काफी धीमी थी।

मैं इस समस्या का हिस्सा ट्रैक करने में कामयाब रहा कि मैंने अंतिम परिणाम सरणी को कैसे सहेजने का फैसला किया।

मुझे लगता है कि यह समझना महत्वपूर्ण है अगर आप मेरी कोड का एक छोटा संस्करण देखना आसान होगा:

मूल पोर्टेड कोड: http://pastebin.com/2iBuqmgn अधिक अनुकूलित पोर्टेड कोड: http://pastebin.com/TYU1rHwU

आप में है कि देखेंगे पहला उदाहरण मैं $-> active_topics को सीधे तरीके से घुमाता हूं।

जबकि दूसरे उदाहरण में मैं स्थानीय वैरिएबल का उपयोग करता हूं, इससे पहले कि मैं स्थानीय चर को $-- active_topics को foreach-loop के बाद सहेजता हूं।

मूल लूप के साथ औसतन 1 सेकंड तक लग रहा था, जबकि अधिक अनुकूलित एक औसत पर निष्पादित करने के लिए 0.85 का उपयोग करता है। वे बिल्कुल वही सामग्री लौटते हैं।

स्थानीय चर के उपयोग के साथ अधिक अनुकूलित कोड क्यों अधिक कुशल है?

उत्तर

12

जब आप कक्षा में कुछ एक्सेस करते हैं तो PHP दुभाषिया को पहले कक्षा में कक्षा को ढूंढना होता है और फिर विशेषता कहां होती है। एक सादे स्थानीय चर पर इसे कक्षा के अंदर विशेषता को खोजने की आवश्यकता नहीं है, यह केवल चर की स्मृति तक पहुंच सकता है और इसलिए यह थोड़ा तेज़ है।

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