उन्नत PHP उपयोगकर्ताओं के लिए, और खुद के बीच अंतर जानने ==
और ===
"क्या यह सुनिश्चित करने के लिए ==
या ===
जब मुझे यकीन है कि दोनों ऑपरेंड एक ही प्रकार हैं?"
संक्षिप्त और सामान्य उत्तर है: इस मामलों में उपयोग करने में कोई प्रदर्शन लाभ नहीं है ===
, इसलिए आपको संभवतः उपयोग करना चाहिए ==
।
यह खुद को बेंचमार्किंग में रुचि रखने वाले लोगों के लिए, आप निम्न कोड मैं तदर्थ लिखा का उपयोग करें और के लिए अलग मान कोशिश कर सकते हैं $a
और $b
:
<?php
// CONFIGURATION
$cycles = 1000000;
$a = 'random string 1';
$b = 'random string 2';
// FUNCTIONS
function compare_two_equals($a, $b) {
if ($a == $b) {
return TRUE;
} else {
return FALSE;
}
}
function compare_three_equals($a, $b) {
if ($a === $b) {
return TRUE;
} else {
return FALSE;
}
}
// EXECUTION
$time = microtime(TRUE);
for ($count_a = 0; $count_a < $cycles; $count_a++) {
compare_two_equals($a, $b);
}
$time_two_a = microtime(TRUE) - $time;
$time = microtime(TRUE);
for ($count_a = 0; $count_a < $cycles; $count_a++) {
compare_three_equals($a, $b);
}
$time_three_a = microtime(TRUE) - $time;
$time = microtime(TRUE);
for ($count_a = 0; $count_a < $cycles; $count_a++) {
compare_two_equals($a, $b);
}
$time_two_b = microtime(TRUE) - $time;
$time = microtime(TRUE);
for ($count_a = 0; $count_a < $cycles; $count_a++) {
compare_three_equals($a, $b);
}
$time_three_b = microtime(TRUE) - $time;
$time = microtime(TRUE);
// RESULTS PRINTING
print "<br />\nCOMPARE == (FIRST TRY): " . number_format($time_two_a, 3) . " seconds";
print "<br />\nCOMPARE == (SECOND TRY): " . number_format($time_two_b, 3) . " seconds";
print "<br />\nCOMPARE === (FIRST TRY): " . number_format($time_three_a, 3) . " seconds";
print "<br />\nCOMPARE === (SECOND TRY): " . number_format($time_three_b, 3) . " seconds";
?>
नोट: तुलना केवल तभी मान्य है जब प्रत्येक "FIRST TRY" अपने "सेकंड ट्राइ" के बहुत करीब हो। यदि वे महत्वपूर्ण रूप से भिन्न हैं, तो इसका मतलब है कि प्रोसेसर तुलना करते समय कुछ और करने में व्यस्त था और इसलिए परिणाम अविश्वसनीय हैं और बेंचमार्क फिर से चलाया जाना चाहिए।