क्या PHP को छोटा करने का कोई मतलब है?


101

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

इसके अलावा, वहाँ PHP या कुछ इसी तरह संकलित करने का एक तरीका है?


एक स्पष्ट बिंदु है मोटापा, अपने कोड को कम पोर्टेबल बनाने के लिए जो एक वैध लक्ष्य हो सकता है।
जॉन

जवाबों:


161

PHP को बायटेकोड में संकलित किया जाता है, जिसे बाद में VM से मिलता-जुलता कुछ समझा जाता है। कई अन्य स्क्रिप्टिंग भाषाएं समान प्रक्रिया का पालन करती हैं, जिसमें पर्ल और रूबी शामिल हैं। यह वास्तव में एक पारंपरिक व्याख्या की गई भाषा नहीं है, जैसे, BASIC।

यदि आप स्रोत को "छोटा" करने का प्रयास करते हैं तो कोई प्रभावी गति वृद्धि नहीं होगी। एपीसी जैसे बायोटेक कैश का उपयोग करके आपको एक बड़ी वृद्धि मिलेगी ।

फेसबुक ने हिपहॉप नामक एक कंपाइलर पेश किया जो PHP स्रोत को C ++ कोड में बदल देता है। रैसमस लेरडॉर्फ, बड़े PHP में से एक ने इस साल की शुरुआत में डीग के लिए एक प्रस्तुति की थी जिसमें हिपहॉप द्वारा दिए गए प्रदर्शन सुधार शामिल हैं। संक्षेप में, यह कोड को अनुकूलित करने और बाइटकोड कैश का उपयोग करने की तुलना में बहुत तेज नहीं है। अधिकांश उपयोगकर्ताओं के लिए हिपहॉप ओवरकिल है।

फेसबुक ने भी हाल ही में HHVM का अनावरण किया , जो उनके काम पर आधारित एक नई आभासी मशीन हिपहॉप बना रही है। यह अभी भी नया है और यह स्पष्ट नहीं है कि क्या यह आम जनता के लिए एक प्रमुख प्रदर्शन को बढ़ावा देगा।

बस यह सुनिश्चित करने के लिए कि यह स्पष्ट रूप से कहा गया है, कृपया उस प्रस्तुति को पूरा पढ़ें । यह बेंचमार्क और प्रोफाइल कोड के कई तरीके बताता है और फेसबुक से भी xdebug और xhprof जैसे टूल का उपयोग कर अड़चनों की पहचान करता है ।


2
ध्यान दें कि पूरे बायोटेक / vm चीज वास्तव में आपको बाहरी (!) बायोटेक कैश के बिना कुछ भी नहीं खरीदती है। मुझे नहीं पता कि क्यों PHP डिफ़ॉल्ट रूप से

मुझे लगता है कि यह एक साझा होस्टिंग मुद्दा है। एपीसी PHP में डिफ़ॉल्ट रूप से पुराने 6.0-आधारित ट्रंक के रूप में शामिल है। मुझे यकीन नहीं है कि अगर हम इसे 5.4 में डिफ़ॉल्ट रूप से देखेंगे या जो भी नया ट्रंक समाप्त होता है उसे बुलाया जाएगा ...
चार्ल्स

जानकारी के लिए बहुत - बहुत धन्यवाद। दुर्भाग्य से मेरे पास मेरे सर्वर का गहरा नियंत्रण नहीं है (यह किराए पर है)। क्या यह संभावना है कि वेब होस्ट एपीसी का उपयोग करें?
Bojangles

3
अधिकांश साझा होस्टिंग प्रदाता APC का उपयोग नहीं करते हैं। आपको वर्चुअल प्राइवेट सर्वर में देखना चाहिए ताकि आप कॉन्फ़िगरेशन को नियंत्रित कर सकें। VPSes अक्सर सामान्य साझा होस्टिंग की तुलना में अधिक महंगे होते हैं, लेकिन एक वास्तविक समर्पित सर्वर की तुलना में बहुत कम महंगे होते हैं। लोकप्रिय VPS प्रदाताओं में स्लाइसहोस्ट और लाइनोड शामिल हैं। यह मत भूलो कि आपको पहले अपना कोड बेंचमार्किंग और प्रोफाइलिंग करना चाहिए !
चार्ल्स

15

एक opcode कैश का उपयोग करने के पक्ष में PHP को छोटा करने के विचार को भूल जाओ, जैसे PHP Accelerator, या APC

या कुछ और पसंद है memcached


18
मैंने कहा "कुछ और।"
स्टीफन

3
यह स्पष्ट नहीं है कि आप एक opcode कैश के अलावा कुछ और मतलब है।
ट्रेफिनॉन

5
memcached प्रदर्शन में सुधार करने के लिए एक पूरी तरह से स्पष्ट तरीका है ... बेंचमार्किंग और प्रोफाइलिंग करने और उस कैशिंग को स्थापित करने के बाद खुद को सर्वश्रेष्ठ प्रदर्शन प्राप्त करना संभव होगा।
चार्ल्स

1
यदि आप PHP 5.5 का उपयोग कर रहे हैं, तो आपको किसी भी ओपेक कैश को स्थापित करने की आवश्यकता नहीं है क्योंकि यह अब डिफ़ॉल्ट रूप से आता है।
फ़ायरवॉल

1
मैंने वास्तव में स्पष्ट देखा :( मैं दूसरों के साथ सहमत हूं, इस संदर्भ में मेमकास्ट का उपयोग करना भ्रामक है। संकलन प्रक्रिया के भाग के रूप में डेटा को कैशिंग परिणामी ऑप कोड के समान नहीं है।
माइक पुरसेल

3

कुछ पुनर्लेखन (छोटे चर नाम) के साथ आप कुछ बाइट्स मेमोरी को बचा सकते हैं, लेकिन यह भी बहुत महत्वपूर्ण है।

हालाँकि मैं अपने कुछ अनुप्रयोगों को इस तरह से डिज़ाइन करता हूँ जो स्क्रिप्ट को एक साथ सम्मिलित करने की अनुमति देता है। इसके साथ php -wस्क्रिप्ट स्टार्टअप के लिए थोड़ा गति हासिल करने के साथ, इसे काफी कॉम्पैक्ट किया जा सकता है। एक opcode- सक्षम सर्वर पर यह केवल कुछ फ़ाइल माइम जाँच बचाता है।


3

यह एक विज्ञापन की तुलना में कम जवाब है। मैं एक PHP एक्सटेंशन पर काम कर रहा हूं जो स्थिर टाइपिंग के साथ VM पर चलने के लिए Zend opcodes का अनुवाद करता है। यह मनमाने ढंग से PHP कोड को तेज नहीं करता है। यह आपको कोड लिखने की अनुमति देता है जो नियमित PHP की अनुमति देता है की तुलना में तेजी से चलता है। यहां कुंजी स्थिर टाइपिंग है। एक आधुनिक सीपीयू पर, एक गतिशील भाषा शाखा गलतफहमी दंड खाती है जो बाएं और दाएं होती है। तथ्य यह है कि PHP arrays हैश टेबल भी उच्च लागत लगाता है: शाखा के बहुत सारे गलतफहमी, कैश का अक्षम उपयोग, खराब मेमोरी प्रीफ़ैचिंग, और कोई भी SIMD अनुकूलन जो भी हो। विशेष रूप से शाखा मिसप्रेडिक्शन और कैश मिस आज के प्रोसेसरों के लिए एड़ी की एड़ी हैं। मेरा छोटा सा वीएम हैश टेबल के बजाय स्थिर प्रकार और सी सरणी का उपयोग करके उन समस्या को दूर करता है। परिणाम लगभग दस गुना तेजी से चल रहा है। यह बाइटकोड व्याख्या का उपयोग कर रहा है। एक्सटेंशन वैकल्पिक रूप से gcc के माध्यम से फ़ंक्शन संकलित कर सकता है। उस स्थिति में, आपको दो से पांच गुना अधिक गति मिलती है।

यहाँ रुचि रखने वाले के लिए लिंक है:

https://github.com/chung-leong/qb/wiki

फिर से, विस्तार एक सामान्य PHP त्वरक नहीं है। आपको इसके लिए कोड विशिष्ट लिखना होगा।


2

हां एक (गैर-तकनीकी) बिंदु है।

आपका होस्ट अपने सर्वर पर आपके कोड की जासूसी कर सकता है। यदि आप इसे छोटा और छोटा करते हैं, तो यह आपके विचारों को चुराने के लिए अधिक कठिन है।

मिनिफाइंग और बदसूरत php का एक कारण जासूसी-संरक्षण हो सकता है। मुझे लगता है कि बदसूरत कोड को एक स्वचालित तैनाती में एक कदम होना चाहिए।


1

PHP संकलक हैं ... किसी सूची के लिए यह पिछला प्रश्न देखें ; लेकिन (जब तक कि आप फेसबुक का आकार नहीं हैं या क्लाइंट-साइड चलाने के लिए आपके एप्लिकेशन को लक्षित कर रहे हैं) वे आम तौर पर बहुत अधिक परेशानी के लायक हैं

सरल ओपोड कैशिंग आपको शामिल प्रयास के लिए अधिक लाभ देगा। या अड़चनों की पहचान करने के लिए अपने कोड को प्रोफाइल करें, और फिर इसे ऑप्टिमाइज़ करें।


1

आपको PHP को छोटा करने की आवश्यकता नहीं है। एक बेहतर प्रदर्शन पाने के लिए, एक ओपकोड कैश स्थापित करें; लेकिन आदर्श समाधान यह होगा कि आपके PHP को 5.5 संस्करण या उससे ऊपर के संस्करण में अपग्रेड किया जाए क्योंकि नए संस्करणों में डिफ़ॉल्ट रूप से Zend अनुकूलक नाम से एक opcode कैश है जो अन्य लोगों की तुलना में बेहतर प्रदर्शन कर रहा है http://massivescale.blogspot.com/2013/06 /php-55-zend-optimiser-opcache-vs-xcache.html

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.