Для просунутих користувачів 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";
?>
ПРИМІТКА. Порівняння діє лише тоді, коли кожен "ПЕРШИЙ Спробуй" дуже близький до свого "ДРУГО Спробуй". Якщо вони суттєво відрізняються, це означає, що процесор був зайнятий чимось іншим під час виконання порівнянь, і тому результати недостовірні, і тест слід запустити знову.