2012-01-15 15 views
13

मैं फ़ाइल सामग्री टोकन करने के लिए एक स्क्रिप्ट लिख रहा हूं। मैंने जावास्क्रिप्ट में एक टोकनेज़र लिखा है, लेकिन यह बड़ी फ़ाइलों (5+ सेकेंड) के साथ बहुत धीमी हो जाती है। चूंकि मैं सर्वर से फ़ाइलों को वैसे भी पुनर्प्राप्त कर रहा हूं, इसलिए मैं कुछ सेकेंड को बंद करने के लिए PHP में इसे फिर से लिखने पर विचार कर रहा हूं। मैंने पढ़ा है कि PHP और जावास्क्रिप्ट के बीच गति अंतर नगण्य है, लेकिन यदि फ़ाइलें 1 एमबी या बड़ी हैं, तो एक छोटा सा गति अंतर जोड़ सकता है। मुझे this benchmark ऑनलाइन मिला, लेकिन मुझे यकीन नहीं है कि जानकारी अद्यतित है (पिछले कुछ वर्षों से सभी जेएस इंजन अनुकूलन के साथ)।PHP बनाम जावास्क्रिप्ट की गति?

मेरे सभी कोड पर पोर्टिंग कुछ काम करेगा, इसलिए अगर मैं इसकी मदद कर सकता हूं, तो मैं PHP का उपयोग नहीं करूंगा। लेकिन अगर यह बहुत तेज (25-30%) होने जा रहा है, तो यह इसके लायक होगा।

+3

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

+0

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

+0

कुछ सर्वर पक्ष (जो भी भाषा) को टोकन करने की संभावना _cache_ को संभावित उपयोगकर्ताओं को लाभ पहुंचाने की संभावना देता है (या पृष्ठ को रीफ्रेश करते समय भी वही उपयोगकर्ता) - साथ ही ग्राहक के हार्डवेयर/गतिविधियों से स्वतंत्र होने के कारण। – AD7six

उत्तर

12

ठीक है, जैसा कि आपने बताया है, जावास्क्रिप्ट क्लाइंट पक्ष पर निष्पादित किया गया है, इसलिए यह ग्राहक पर निर्भर करेगा। उदाहरण के लिए, एक आईपैड पर एक क्लाइंट उन क्वैक 3 एचटीएमएल 5 को आसानी से गेमिंग मशीन पर चलने वाले क्लाइंट के रूप में चलाने में सक्षम नहीं होगा। दूसरी तरफ PHP सर्वर पर चलता है।

सामान्य रूप से, जेएस PHP की तुलना में तेज़ी से काफी तेज है (उसी हार्डवेयर पर);

मेरे दावे का समर्थन करने के लिए, दोनों के बीच परीक्षणों के कुछ hard figures यहां दिए गए हैं। JS (query) vs PHP प्रदर्शन।

+13

जेएस सर्वर पर भी चलता है। –

+1

शायद मैं इसे गलत देख रहा हूं, लेकिन [बॉक्स प्लॉट] (http://shootout.alioth.debian.org/u32/which-programming-languages-are-fastest.php?php=on&v8=on&calc=chart) ऐसा लगता है कि वी 8 जावास्क्रिप्ट PHP से तेज है। – icktoofay

+0

ओओपीएस, जिसे उलट दिया जाना चाहिए था।धन्यवाद @ ick2 –

0

मैंने अभी PHP से जावास्क्रिप्ट में एक स्क्रिप्ट परिवर्तित की है और मैंने प्रदर्शन में काफी वृद्धि की है।

जावास्क्रिप्ट गणितीय गणनाओं में बहुत तेज लगता है। मैंने व्यक्तिगत रूप से प्रदर्शन सुधार देखा है, कुछ मामलों में मेरी PHP प्रक्रिया ने कुछ सेकंड चलने का भी काम किया है, जबकि जावास्क्रिप्ट में लिखी गई एक ही प्रक्रिया में कुछ मिलीसेकंड लगते हैं।

हालांकि जावास्क्रिप्ट क्लाइंट साइड भाषा के रूप में जाना मैं Node.js के लिए सर्वर के लिए धन्यवाद पर अपने कोड चलाने

यहाँ आप जावास्क्रिप्ट वी 8 और PHP

http://benchmarksgame.alioth.debian.org/u32/benchmark.php?test=all&lang=v8&lang2=php&data=u32

1
के बीच बेंचमार्क देख सकते हैं

यह कहने लायक है कि PHP का उपयोग करने के लिए एक और विचार सर्वर पक्ष को कैश करने की क्षमता है। मैं इस पर विचार कर रहा हूं कि मुझे कुछ कार्यों को जेएस से PHP में ले जाना चाहिए क्योंकि यदि मैं फ़ाइलों को सर्वर पर कैश करता हूं तो इसमें कोई और गणना शामिल नहीं होती है! मुझे पता है कि यह टिकट पुराना है लेकिन भविष्य के पाठकों के लिए यह एक और विचार हो सकता है।

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