2012-05-02 9 views
9

PHP एक सामान्य उद्देश्य सर्वर साइड स्क्रिप्टिंग भाषा है। यह अच्छी तरह से ज्ञात है कि जब पृष्ठ लोड होता है और परिणामी वेबपृष्ठ दिखाया जाता है तो PHP कोड का अर्थ होता है। हाल ही में मैंने PHP (हिपहॉप वर्चुअल मशीन) के लिए बस समय संकलक के बारे में सुना है। यह जानना चाहेंगे कि निष्पादन में यह किस तरह का अंतर करेगा और क्या यह दुभाषिया के बजाए एक जिट रखना बेहतर है? क्या कोई php इंजन है जिसमें जिट है?PHP - बस समय संकलक बनाम इंटरप्रेटर

संपादित करें: इस तरह पीएचपी निष्पादन प्रवाह है? Php कोड -> पार्स -> टोकन ->बाईटकोड/opcode -> php इंजन व्याख्या -> मशीन कोड -> निष्पादन

Corect मुझे अगर मैं गलत हूँ बाइटकोड आमतौर पर वर्चुअल मशीनों में निष्पादित होते हैं। एक ओपोड (मशीन भाषा के नजदीक है) सीधे मशीन द्वारा निष्पादित किया जा सकता है। क्या इसका मतलब है कि एक PHP इंजन वर्चुअल मशीन है या इसके कुछ कार्यान्वयन वर्चुअल मशीन हैं?

अग्रिम में धन्यवाद।

+1

क्या फेसबुक के लिए अच्छा है (वास्तुकला पीएचपी बंद एक JIT कम्पाइलर वास्तव में भावना का एक बहुत नहीं है को देखते हुए) कुछ अन्य परियोजना के लिए यकीन है कि के लिए अच्छा नहीं है। उच्च स्केलेबिलिटी में आम तौर पर चांदी-बुलेट-समान समाधान नहीं होते हैं (मान लीजिए कि आपके पास उच्च लोड किया गया एप्लिकेशन है, अन्यथा अपना समय बर्बाद न करें - आपके पास अभी भी अनुकूलित करने के लिए बहुत सारे स्थान हैं, जब तक कि हिप्पॉप इसका उपयोग न करे) – zerkms

+2

आपको प्रारंभ करना चाहिए [एपीसी] सक्षम करना (http://php.net/manual/book.apc.php)। यह PHP को प्रत्येक अनुरोध पर व्याख्या चरण चलाने से बचाएगा। – adrien

+0

बाइटकोड कैशिंग आपको बाइटकोड को संकलित करता है, बाइटकोड की व्याख्या नहीं (जो एपीसी के साथ और बिना होता है)। – delnan

उत्तर

6

हिपहॉप एक जेआईटी कंपाइलर नहीं है - यह एक कोड कनवर्टर है जो सी ++ में PHP को बदलता है जिसे बाद में पारंपरिक ऑफ़लाइन कंपाइलर का उपयोग करके संकलित किया जा सकता है।

नतीजतन, eval और create_function काम नहीं करेगा, न ही टोकनेज़र फ़ंक्शन। मैंने इस मामले को गहराई से नहीं देखा है, लेकिन मुझे उम्मीद है कि उस सशर्त/रनटाइम मूल्यांकन में ऑपरेशन में समस्याएं भी हो सकती हैं।

तब तक बहुत अधिक बिंदु नहीं होगा जब तक कि यह कोड बहुत तेज न हो।

एक ओपीओएच एक PHP ओपोड कैश का उपयोग कर एक व्यापक प्रदर्शन बढ़ावा देता है (मूल कोड के रूप में काफी नहीं) कार्यक्षमता समझौता किए बिना।

+0

जानकारी के लिए धन्यवाद। मैं एपीसी एक्सटेंशन, ज़ेंड ऑप्टिमाइज़र [PHP Acceleartors] (http://en.wikipedia.org/wiki/List_of_PHP_accelerators) आदि का उपयोग करके समझता हूं। हमें प्रदर्शन बढ़ावा देता है। क्या आप कृपया बता सकते हैं कि जेआईटी कंपाइलर PHP के आर्किटेक्चर के लिए क्यों समझ में नहीं आता है या किस प्रकार की वास्तुकला जेआईटी उपयोगी होगी? –

+5

फेसबुक हिप हॉप वर्चुअल मशीन एक जेआईटी कंपाइलर है। फेसबुक हिप्पोप – Tosh

+0

के बाद यह पागल था ["एचएचवीएम बेहतर प्रदर्शन प्राप्त करने के लिए एक पूर्ण-समय-समय (जेआईटी) संकलन दृष्टिकोण का उपयोग करता है जबकि PHP डेवलपर्स का आदी हो रहा है।" [Https://github.com/facebook/ hhvm) – msanford

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