php - Speed difference in using inline strings vs concatenation in php5? -


(php5 मानिए)

  & lt; php $ foo = 'कुछ शब्द' ; // केस 1 प्रिंट "इन $ foo हैं"; // केस 2 प्रिंट "ये हैं {$ foo}"; // केस 3 प्रिंट 'ये हैं' $ Foo; ? & Gt;  

क्या 1 और 2 के बीच का कोई अंतर है?

यदि नहीं, तो 1/2 और 3 के बीच क्या है?

< पी>

ठीक है, जैसा कि "वास्तविक जीवन में तेजी से हो सकता है" प्रश्नों के साथ, आप वास्तविक जीवन परीक्षण को नहीं हरा सकते हैं।

  फ़ंक्शन टाइमफ़न्क ($ फ़ंक्शन, $ रन) {$ times = array (); के लिए ($ i = 0; $ i & lt; $ रन; $ i ++) {$ time = microtime (); call_user_func ($ समारोह); $ बार [$ i] = माइक्रोटिम () - $ टाइम; } Return_sum ($ बार) / $ रन; } फ़ंक्शन विधि 1 () {$ foo = 'कुछ शब्द'; के लिए ($ i = 0; $ i & lt; 10000; $ i ++) $ t = "यह $ foo हैं"; } फ़ंक्शन Method2 () {$ foo = 'कुछ शब्द'; के लिए ($ i = 0; $ i & lt; 10000; $ i ++) $ t = "ये हैं {$ foo}"; } फ़ंक्शन विधि 3 () {$ foo = 'कुछ शब्द'; के लिए ($ i = 0; $ i & lt; 10000; $ i ++) $ t = "ये हैं" $ Foo; } प्रिंट टाइमफंक्स ('विधि 1', 10)। "\ N"; प्रिंट टाइमफंक ('विधि 2', 10)। "\ N"; प्रिंट टाइमफंक ('विधि 3', 10)। "\ N";  

इसे पृष्ठ पर सबकुछ कुछ रन दें, फिर ...

0.0035568

0.0035388

0.0025394 < / P>

इसलिए, जैसा कि अपेक्षित है, प्रक्षेप लगभग समान हैं (शोर स्तर का अंतर, संभवतः अतिरिक्त वर्णों के कारण प्रक्षेप इंजन को संभालना आवश्यक है) सीधे समापन के बारे में 66% गति है, जो कि कोई बड़ा झटका नहीं है प्रक्षेप विश्लेषक दिखेगा, कुछ नहीं करना, फिर एक साधारण आंतरिक स्ट्रिंग कॉनटैट के साथ समाप्त करें। यहां तक ​​कि अगर कॉन्सैट महंगे हो, तो इंटरपोलेटर को अभी भी करना होगा, इसके बाद वेरिएबल को पार्स करने और मूल स्ट्रिंग को ट्रिम / कॉपी करने के लिए सभी कार्य।

सोमनाथ द्वारा अपडेट:

मैंने वर्चुअल टाइम तर्क से ऊपर Method4 () जोड़ दिया है।

  फ़ंक्शन Method4 () {$ foo = 'कुछ शब्द'; के लिए ($ i = 0; $ i & lt; 10000; $ i ++) $ t = 'ये हैं' $ Foo; } प्रिंट टाइमफंक ('विधि 4', 10)। "\ N"; परिणाम थे: 0.0014739 0.0015574 0.0011 9 55 0.001169 जब आप केवल एक स्ट्रिंग घोषित कर रहे हैं और स्ट्रिंग को भी पार्स करने की कोई आवश्यकता नहीं है, तो PHP डीबगर को पार्स करने में क्यों भ्रमित किया जाए। मुझे आशा है कि आपको मेरी बात मिल गई है। 


Comments