Đối với người dùng PHP nâng cao, việc biết sự khác biệt giữa ==
và ===
và tự hỏi mình "có nhanh hơn khi so sánh với ==
hoặc ===
khi tôi chắc chắn rằng cả hai toán hạng đều cùng loại?"
Câu trả lời ngắn gọn và chung chung là: Không có hiệu suất đạt được khi sử dụng ===
trong trường hợp này, vì vậy bạn có thể nên sử dụng ==
.
Đối với những người quan tâm đến việc tự chuẩn hóa nó, bạn có thể sử dụng mã sau đây tôi đã viết đặc biệt và thử các giá trị khác nhau cho $a
và $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";
?>
LƯU Ý: Việc so sánh chỉ có hiệu lực khi mỗi "TRY ĐẦU TIÊN" rất gần với "THỨ HAI". Nếu chúng khác nhau đáng kể, điều đó có nghĩa là bộ xử lý đã bận làm việc khác trong khi thực hiện so sánh và do đó, kết quả không đáng tin cậy và điểm chuẩn sẽ được chạy lại.