สำหรับผู้ใช้ 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" แต่ละรายการอยู่ใกล้กับ "SECOND TRY" มาก หากพวกเขาแตกต่างกันอย่างมีนัยสำคัญก็หมายความว่าหน่วยประมวลผลไม่ว่างทำอย่างอื่นในขณะที่ดำเนินการเปรียบเทียบและเพื่อให้ผลลัพธ์ไม่น่าเชื่อถือและมาตรฐานควรจะทำงานอีกครั้ง