HHVM के बारे में
पहले से ही हैबे पर
लिखा है। संक्षेप में: HHVM फेसबुक की एक आभासी मशीन है, जो अनुवाद और कोड के JIT संकलन के लिए धन्यवाद, आपको कई बार PHP को गति देने की अनुमति देता है। डेवलपर्स भी PHP 5.4 के साथ लगभग पूर्ण संगतता का वादा करते हैं।
मैंने कई परीक्षणों पर देशी दुभाषिया के साथ एचएचवीएम की तुलना करने का फैसला किया, और इस पर सीएमएस चलाने की भी कोशिश की।
परीक्षण की स्थिति
एक वर्चुअल मशीन में प्रोसेसर 2 कोर Core i5 @ 3.3 GHz, 8 GB RAM के कॉन्फ़िगरेशन के साथ परीक्षण किया गया था।
OS: उबंटू 12.04 x86_64।
PHP: 5.3.10-1ubuntu3.7
नगनेक्स: 1.1.19
अपाचे: 2.2.22
एचएचवीएम: 2.1.0-देव
सेटिंग्स में, निष्पादन टाइमआउट और मेमोरी_लिमिट में वृद्धि की गई थी, एपीसी सक्षम किया गया था। कोई अतिरिक्त ट्यूनिंग नहीं की गई थी।
HHVM
निर्देशों के अनुसार स्रोत से स्थापित किया गया है।
मानक
कई लिपियाँ तैयार की गईं, जिनमें से प्रत्येक को 50 बार चलाया गया: PHP CLI, HHVM CLI, Apache + mod_php, nginx + php-fpm, और nginx + HHVM में 10 बार। सेकंड में औसत निष्पादन समय तालिका में प्रस्तुत किया गया है। अंतिम दो कॉलम HHVM का उपयोग करते समय गति में लाभ का संकेत देते हैं।
| CLI | HTTP | तुलना में गति में वृद्धि |
कसौटी | पीएचपी | HHVM | अपाचे + mod_php | नगनेक्स + php_fpm | नगनेक्स + एचएचवीएम | PHP सीएलआई | पीएचपी-एफ पी एम |
asort | 42.4 | 17.9 | एन / ए १ | 40.9 | 18.9 | 137.0% | 116.7% |
bcmath_factorial | 3.4 | 3.0 | 3.4 | 3.4 | 2.8 | 13,9% | 21,5% |
curl_multi | 8.6 | 8.4 | 9.7 | 9.0 | 9.7 | 2.3% | -7.0% |
DOMDocument | 50.2 | 51.0 | 54.3 | 50.1 | 50.1 | -1.5% | 0,0% |
के लिए | 60.5 | 36.9 | 60.8 | 61.0 | 211.2 | 63,7% | -71.1% |
GeoIP | 14.4 | 15.6 | 14.7 | 14.9 | 5.0 | -7.8% | 198.0% |
getid3 | 46.5 | 26.9 | 46.2 | 45.6 | 8.5 | 72.4% | 435.5% |
mb_strings | 22.8 | 16.8 | 7.0 | 22.2 | 17.0 | 35,8% | 31,0% |
md5 | 36.8 | 35.7 | 37.0 | 37.2 | 27.2 | 3,2% | 36,7% |
preg | 11.6 | 10.9 | 11.6 | 11.7 | 10.9 | 6.1% | 7.9% |
मुख्य | 4.2 | 5.6 | 4.2 | 4.3 | 2.5 | -24.1% | 71.8% |
तरह | 46.3 | 17.8 | एन / ए १ | 44.1 | 17.5 | 160.1% | 151.8% |
SQLite | 12.4 | 10.0 | 12.6 | 12.2 | 15.2 | 23,7% | -19.9% |
तार | 38.6 | 37.5 | 37.8 | 38.2 | 36.0 | 3.0% | 6,3% |
tcp_client | 15.4 | 13.2 | 15.5 | 17.3 | 13.6 | 16,9% | 27,7% |
tcpdf | 3.3 | 2.4 | 3.4 | 4.4 | 1.4 | 38,7% | 215.1% |
थंबनेल | 100.8 | 94.8 | 93.7 | 99.9 | 94.2 | 6,3% | 6.1% |
1 - अपाचे asort.php और sort.php निष्पादित नहीं कर सका - स्मृति से बाहर दुर्घटनाग्रस्त हो गयाasort - 10 मिलियन तत्वों के साथ तार के एक साहचर्य सरणी को क्रमबद्ध करें
bcmath_factorial - bcmul फ़ंक्शन द्वारा संख्या 1000 के भाज्य की गणना करना
curl_multi - इंटरनेट से 10 धाराओं में 1 एमबी की 100 फाइलें डाउनलोड करें
प्रभुत्व - बड़े XML को पार्स करना (122 हजार टैग) - उदाहरण के रूप में साइटमैप ag.ru लिया
- 1000 से अधिक पुनरावृत्तियों के लिए 3 नेस्टेड (कुल 1 बिलियन)
जियोआईपी -
जियोआईपी पर आधारित 100 हजार आईपी खोजें
getid3 -
getID3 () लाइब्रेरी का उपयोग करके MP3 से ID3 टैग प्राप्त करें - 10 हजार बार
mb_strings - mb_strlen, mb_ereg_replace, mb_substr, mb_strpos, mb_strtolower का उपयोग युद्ध और शांति के पहले खंड पर 1000 बार करें
md5 -
md5 पीढ़ी 1 से 100 मिलियन तक की संख्या
preg - HTML पृष्ठ पर रंगों, टैग और URL के preg_match_all हेक्स-कोड की खोज करें - 1000 बार (मुख्य हैबर उदाहरण के लिए लिया गया है)
प्राइम - ब्रूट बल द्वारा 2 से 1 मिलियन तक सभी प्राइम नंबर प्राप्त करना
सॉर्ट - संख्यात्मक सूचकांकों के साथ 10 मिलियन तत्वों के तारों की एक सरणी को सॉर्ट करें
sqlite - sqlite3 डेटाबेस में 10 हजार प्रश्नों का चयन करें
स्ट्रिंग्स - "वॉर एंड पीस" के पहले वॉल्यूम पर स्ट्रलेन, स्ट्रै_रेप्लेस, सब्सट्रेट, स्ट्रैप, स्ट्रेटोलॉवर का 10 हजार बार उपयोग करना
tcp_client - लोकलहोस्ट से 10 हजार कनेक्शन और टीसीपी (
CHARGEN ) पर 2 एमबी पढ़ना
tcpdf - बहु-पृष्ठ पीडीएफ लाइब्रेरी
TCPDF द्वारा पीढ़ी - 10 बार (
उदाहरण_061. php लिया गया)
थंबनेल - 10K थंबनेल जीडी Imagecopyresized () का उपयोग कर छवि निर्माण
मैं
स्मार्टी के साथ टेस्ट भी चलाना चाहता था, लेकिन एचएचवीएम इसे चलाने में असमर्थ था।
परिणामों की व्याख्या
बेशक, बेंचमार्क पूरी तरह से प्रदर्शन की स्थिति नहीं दिखा सकता है। लेकिन फिर भी, कुछ निष्कर्ष निकाले जा सकते हैं।
- प्रत्येक परीक्षण रन का निष्पादन समय औसत से बहुत अलग नहीं था - इसलिए परिणाम को स्थिर माना जा सकता है।
- दो असामान्य परिणाम हैं: Apache + mod_php पर mb_string परीक्षण को बहुत तेज़ चलाना और nginx + HHVM के लिए बहुत धीमी गति से प्रदर्शन करना। मैंने परीक्षणों की जाँच की, लेकिन मुझे नहीं पता कि मामला क्या है।
- सीएलआई संस्करण में क्या है, जब वेब एचएचवीएम के लिए उपयोग किया जाता है, तो आधे परीक्षणों में लाभ मिलता है।
- कुछ मामलों में, एचएचवीएम को एक नगनेक्स बैकेंड के रूप में उपयोग करना (यानी सीएलआई के रूप में नहीं) एक और भी अधिक वृद्धि देता है - जाहिरा तौर पर जेआईटी की सक्रियता के कारण। गौर करें कि गेटिड 3 और टीसीपीडीएफ लाइब्रेरी कितनी तेजी से काम करते हैं।
सीएमएस परीक्षण
Wordpress
तथ्य यह है कि Word HHVM पर चलता
है अग्रिम में जाना जाता था । केवल एक फ़ाइल में एक छोटे से समायोजन की आवश्यकता है।
सरल परीक्षण: मुख्य पृष्ठ को एक स्ट्रीम में 100 बार लोड करना।
nginx + HHVM:
4.498 sअपाचे + mod_php: 9.997 c
अपाचे + mod_php + APC: 6.567 c
nginx + php-fpm + APC: 5.460 s
मैं इस तथ्य पर आपका ध्यान आकर्षित करता हूं कि यह पृष्ठ प्रतिक्रिया समय का परीक्षण था, और कई थ्रेड्स में परीक्षण लोड नहीं था।
बिट्रिक्स और जुमला
HHVM पर बिट्रिक्स और जूमला ने एक घातक त्रुटि देते हुए शुरू करने से इनकार कर दिया। मुझे संदेह है कि Bitrix के लॉन्च होने की कोई उम्मीद नहीं है, क्योंकि पदावनत किए गए कार्य और mbstring.func_overload का उपयोग किया जाता है।
इंटरनेट की समीक्षा से पता चला कि जबकि Worpress HHVM के तहत चलाने का सबसे आसान तरीका है। अन्य सीएमएस और चौखटे के साथ, सब कुछ इतना रसीला नहीं है, उदाहरण के लिए, हाल ही में हैबर पर एक विषय में, सिम्फनी 2
ने उड़ान नहीं भरी ।
शायद उन लोगों के लिए जिनके लिए प्रदर्शन बहुत महत्वपूर्ण है, आपको तुरंत एचएचवीएम के लिए एक रूपरेखा लिखना चाहिए?
निष्कर्ष
1) एचएचवीएम कुछ कार्यों पर एक अच्छा प्रदर्शन को बढ़ावा देता है - कुछ की पृष्ठभूमि प्रसंस्करण प्रक्रियाओं को शुरू करने के लिए इसका उपयोग करना संभव है। याद रखें कि वैश्विक चरों का उपयोग करते समय HHVM प्रभावी नहीं है।
2) वर्तमान में, HHVM के साथ मौजूदा पुस्तकालयों, चौखटे और CMS का उपयोग करना मुश्किल है। HHVM प्रदर्शन के लिए तेज किया जाता है और विभिन्न सुंदर डिजाइनों का समर्थन नहीं कर सकता है। हालांकि, भविष्य में स्थिति में सुधार होगा, जैसा कि और एचएचवीएम एक बेहतर भाषा का समर्थन करना शुरू कर सकता है और डेवलपर्स को एचएचवीएम के लिए अपने कोड को अपनाने से हैरान हो सकते हैं।
3) वर्डप्रेस पर, HHVM ने एक प्रभावशाली प्रदर्शन वृद्धि दिखाई - mod_php की तुलना में 2 गुना।
पुनश्च
परीक्षण स्क्रिप्ट ,
कच्चे डेटा (एक्सेल)