2016-07-20 8 views
9

मैं 100 कार्यों की घोषणा करता हूं, लेकिन मैं वास्तव में उनमें से किसी को भी नहीं बुलाता हूं। परिभाषित समय को प्रभावित करने वाले कई कार्यों को परिभाषित किया जाएगा?क्या पीएचपी बुलाए जाने से पहले कार्यों को पढ़ता है?

क्या पीएचपी इन कार्यों को संसाधित करने से पहले संसाधित करता है?

+0

यदि आप PHP निष्पादन [यह] (http://stackoverflow.com/questions/2720488/how-exactly-is-a-php-script-executed) के बारे में अधिक जानकारी चाहते हैं तो आप रुचि दे सकते हैं। – Vuldo

+8

प्रत्येक भाषा को व्याकरण/वाक्यविन्यास के लिए स्रोत फ़ाइलों को संसाधित करना होता है। तो हाँ, PHP भी ऐसा करेगा। लेकिन अगर आप कार्यों का आह्वान नहीं करते हैं, तो कुछ भी वास्तव में नहीं होता है। पार्सिंग और सिंटैक्स जांच बेहद तेज़ है। यदि आप कुछ मूर्खतापूर्ण अनुकूलन कदम के बाद हैं - बस ऐसा न करें, इससे आपकी मदद नहीं होगी। – Mjh

+1

'कंप्यूटर के लिए धीमा क्या है हमारे लिए अक्सर तेज़ होता है' - _A smart dev_ आप सुनिश्चित हो सकते हैं; php अनावश्यक काम का _lot_ करता है, बिना हमें ध्यान दिए। आपको _always_ सॉफ़्टवेयर आर्किटेक्चर के संदर्भ में यथासंभव स्वच्छ और स्पष्ट कोड को आज़माएं, जो कि अधिकांश समय कंप्यूटर के लिए सबसे तेज़ तरीका नहीं है। ऑप्टिमाइज़ेशन वह है जो आप करते हैं यदि सब कुछ काम करता है। – giorgio

उत्तर

9

हाँ, php सभी कार्यों रन पर पार्स करता है, और संभव वाक्यविन्यास त्रुटियों की जाँच करता है, (हालांकि यह उन्हें यह सब समय पर अमल नहीं करता है) और एक प्रतीक के रूप में उनके नाम पंजीकृत करता है।
जब आप किसी भी फ़ंक्शन को कॉल करते हैं, तो php फ़ंक्शन नाम के लिए पंजीकृत प्रतीक तालिका में फ़ंक्शन के लिए खोज करता है और फिर उस फ़ंक्शन को निष्पादित करता है।
तो, अपने उद्देश्य के कार्यों का उपयोग करने के लिए बेहतर है क्योंकि यह प्रतीक तालिका के आकार को बढ़ाएगा।

+2

यह ध्यान रखना बहुत महत्वपूर्ण है कि यदि आप ओपेकैच एक्सटेंशन (किसी भी पेशेवर PHP परिनियोजन के रूप में) का उपयोग करते हैं, तो फ़ाइलों को केवल प्रत्येक निष्पादन के बजाय संकलित किया जाता है। ऐसे में संकलन कार्यों से कोई ओवरहेड नहीं है। एकमात्र ओवरहेड उन्हें रनटाइम पर बाध्य कर रहा है।यह कार्यों के लिए कोई समस्या नहीं है, लेकिन कक्षाओं के लिए एक हो सकता है (यदि आपके पास रनटाइम पर बंधे अप्रयुक्त वर्गों के 1000s हैं।) – NikiC

-1

बस स्पष्ट होने के लिए, यहां तक ​​कि सैकड़ों अप्रयुक्त वर्ग और कार्य भी आपके कार्यक्रम के प्रदर्शन में बहुत अंतर नहीं ले रहे हैं। कुछ अंतर, हाँ शायद, लेकिन ज्यादा नहीं। चल रहे कोड को बेहतर बनाने से बड़ा अंतर आएगा। भाषा मैकेनिक्स के अनुकूलन के बारे में चिंता न करें जब तक कि आपको अपना कोड सही न हो जाए। प्रदर्शन अनुकूलन की कुंजी सबसे बड़ी समस्याओं से निपटने के लिए है, और सूक्ष्म भाषा quirks के कारण सबसे बड़ी समस्याएं शायद ही कभी होती हैं।

यदि आप बहुत अधिक कोड लोड करने के प्रभाव को कम करना चाहते हैं जो उपयोग नहीं किया जा रहा है, तो ऐसा करने का सबसे अच्छा तरीका PHP की ऑटोलोडिंग तंत्र का उपयोग करना है।

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

एक ऑटोलोडर का उपयोग करना मतलब है कि आप PHP को उस कोड को लोड करने का काम कर सकते हैं जब इसकी आवश्यकता होती है। यदि आप किसी विशेष वर्ग का उपयोग नहीं करते हैं, तो यह लोड नहीं किया जाएगा, लेकिन दूसरी तरफ यह होगा जब आपको include() या उसके जैसा कुछ भी करने के बिना इसकी आवश्यकता होगी।

यह सेटअप वास्तव में शक्तिशाली है और बहुत अधिक कोड लोड होने के बारे में किसी भी चिंता को समाप्त करता है, भले ही आप एक बड़े ढांचे का उपयोग कर रहे हों।

ऑटोलोडिंग मेरे लिए यहां एक उत्तर में पर्याप्त विस्तार से व्याख्या करने के लिए एक विषय है, लेकिन इसे पढ़ाने के लिए वेब पर बहुत से संसाधन हैं। वैकल्पिक रूप से, मौजूदा एक का उपयोग करें - बहुत सारे ढांचे में एक ऑटोलोडर सिस्टम अंतर्निहित है, इसलिए यदि आप किसी भी प्रकार के आधुनिक PHP ढांचे का उपयोग कर रहे हैं, तो आप उनका उपयोग करने में सक्षम होना चाहिए।

+0

ऑटोलोडिंग का मतलब अतिरिक्त फाइल सिस्टम संचालन है। मैं तर्क दे सकता हूं कि यह आपके सिस्टम को धीमा कर देता है। फिर भी ऑटोलोडिंग का उपयोग करना हमेशा एक अच्छा विचार है, लेकिन प्रश्न के दायरे में मैं आपसे सहमत नहीं हूं। – giorgio

+0

@giorgio - निश्चित रूप से प्रश्न के दायरे में, यह इस बात पर निर्भर करेगा कि कोड कितना लोड किया जा रहा है? अगर हम हर बार केवल एक या दो सौ कक्षाओं का उपयोग करते हैं (जो कि मुझे प्रश्न से मिला है), तो ऑटोलोडिंग निश्चित रूप से अभी भी पूरी तरह से लोड होने की तुलना में बचत होगी। – Simba

+0

@giorgio यदि आप एक उचित कॉन्फ़िगर किए गए ओपेकैच का उपयोग करते हैं, तो ऑटोलोडिंग अतिरिक्त फाइल सिस्टम संचालन का कारण नहीं बनती है। – NikiC

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

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