एक अच्छा अभ्यास न होने के अलावा, @
कॉल स्टैक के नीचे वास्तव में महत्वपूर्ण त्रुटियों पर चबा सकता है, प्रदर्शन जुर्माना कम है।
चलो इसे बेंचमार्क के साथ सत्यापित करें।
<?php
error_reporting(-1);
$limit = 10000;
$start = microtime(true);
for ($i = 0; $i < 10000; $i++) {
echo !isset($_GET['aaa']) ? '' : $_GET['aaa'];
}
$total = 1000000 * (microtime(true) - $start)/$limit;
echo "With isset: $total μs\n";
$start = microtime(true);
for ($i = 0; $i < 10000; $i++) {
echo @$_GET['aaa'];
}
$total = 1000000 * (microtime(true) - $start)/$limit;
echo "With @: $total μs\n";
मेरी नहीं हाल-की-कंप्यूटर पर यह आउटपुट:
With isset: 0.295 μs
With @: 0.657 μs
μs एक दूसरे के दस लाखवाँ है। दोनों विधियां एक सेकंड के आधे मिलियन के करीब आती हैं।
कोई कह सकता है, लेकिन अगर मैं सैकड़ों या हजारों बार ऐसा करता हूं, तो क्या कोई अंतर आएगा? यदि आपको !isset()
एक लाख बार करना है, तो आपका प्रोग्राम पहले से ही 0.3 सेकंड खर्च कर चुका है! जिसका मतलब है कि आपको पहले स्थान पर ऐसा नहीं करना चाहिए था।
फिर भी, @
एक साधारण सरणी से कहीं अधिक जटिल के लिए एक बुरा अभ्यास है, इसलिए इसका उपयोग का उपयोग न करें, भले ही आप जानते हैं कि प्रदर्शन अंतर महत्वहीन है।
संपादित करें: 'जारीकर्ता()' कॉल में समापन समापन को जोड़ा गया। –