5

यह शायद एक दर्दनाक बुनियादी सवाल का जवाब करने के लिए है, लेकिन मैं PHP के बराबर समान अगर!== बनाम अगर!= नियंत्रित करने के लिए प्रवाह का उपयोग के बारे में प्रदर्शन के मुद्दों के बारे में सोच रहा हूँ।

निम्नलिखित तुच्छ पीएचपी समारोह पर विचार करें:

<?php 
function test_json($json = NULL) { 
    if ($json != NULL) { 
    echo 'You passed some JSON.'; 
    } else { 
    echo 'You failed to pass any JSON.'; 
    } 
} 
?> 

एक प्रदर्शन दृष्टि से, यह को रोजगार के लिए बेहतर है अगर समान (!==) अलग-अलग प्रकार के माध्यम से पुनरावृत्ति पीएचपी को रोकने के लिए, एक वैध तुलना लगाने के लिए प्रयास कर रहा?

मुझे लगता है कि !==पहले तुलना चर प्रकार, और है कि अगर विफल रहता है, इसे तुरंत FALSE रिटर्न? मैंने != का उपयोग PHP3 के रूप में लगभग एक प्रतिबिंब के रूप में किया है। अब जब मैं कुछ और कम्प्यूटेशनल-गहन परियोजनाओं पर काम कर रहा हूं, तो मिनट के प्रदर्शन के विचार चिंता का अधिक हो जाते हैं।

प्रवाह नियंत्रण अनुकूलन पर अन्य टिप्पणियां, ज़ाहिर है, आपका स्वागत है!

+1

प्रदर्शन विचार एक वास्तविक चिंता का विषय बन रहे हैं, भी रूपरेखा का प्रयास करें। फ़ंक्शन कॉल की तुलना में कोई फर्क नहीं पड़ता। – mario

+0

@ मारियो यूप। मैं तुलना ऑपरेटर के बारे में उत्सुक हूं क्योंकि जब मैं एक समारोह लिख रहा था (मेरी आदतों पर सवाल उठा रहा था) – msanford

उत्तर

7

मैं नहीं बनाम सख्त तुलना ऑपरेटरों ढीला पर किसी भी प्रदर्शन परीक्षण किया है, लेकिन आप क्या करने की कोशिश कर रहे हैं के लिए, मैं बजाय http://www.php.net/manual/en/function.is-null.php

पर is_null() पर

if (!is_null($json)) { 
    do_stuff() 
} 

अधिक जानकारी की तरह कुछ की सिफारिश करेंगे

संपादित करें: ऊपर से जुड़े PHP पृष्ठ की टिप्पणियों में एक नोट में कुछ परिणाम दिखाए गए हैं कि === ऑपरेटर == ऑपरेटर से थोड़ा तेज है, दोनों is_null() से तेज़ हैं। हालांकि, एक और नोट बताता है कि "=== न्यूल और is_null के बीच निष्पादन समय अंतर 250 नैनोसेकंड से कम है। कुछ महत्वपूर्ण चीज़ों को अनुकूलित करें।" मुझे वहां सहमत होना होगा। तो जो कुछ भी कहा, मैं सुझाव दूंगा कि आप जो सबसे ज्यादा पठनीय मानते हैं उसके साथ जाएं।

+1

+1, 1,000 000 तुलनाओं के साथ एक परीक्षण चलाना, एक लूप में प्रत्येक ''NULL' की तुलना में एक परीक्षण चला रहा था ; '==', '===' और 'is_null()', मुझे लगता है कि '==' और '===' लगभग वही हैं '===' थोड़ा * तेज और 'is_null()' समय के बारे में दो बार लेना। हालांकि, व्यक्तिगत स्वाद के मामले में, मैं 'is_null() 'कम नहीं करता,' NULL == NULL' गलत होना चाहिए (* लेकिन नहीं *) और' is_null() 'उस धारणा को कैप्चर करता है। – zrvan

+0

'NULL == NULL' के बारे में उत्कृष्ट बिंदु। मैं ऐसी भाषा में शामिल कार्यों के पक्ष में गलती करता हूं जहां इस सटीक कारण के लिए संभव है: वे अजीब कोने के मामलों को सही ढंग से संभालने की संभावना रखते हैं, जिनके बारे में मैंने कभी सोचा नहीं था, जिसका अर्थ है कि कम डिबगिंग बाद में। –

+0

ग्रेट पॉइंट्स। सबको धन्यवाद! – msanford

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