Для опытных пользователей PHP, зная разницу между ==
и ===
спрашивая себя «быстрее ли сравнивать ==
или ===
когда я уверен, что оба операнда одного типа?»
Краткий и общий ответ таков: в этом случае выигрыша в производительности нет ===
, поэтому вам, вероятно, стоит его использовать ==
.
Для тех, кто заинтересован в его тестировании, вы можете использовать следующий код, который я написал ad-hoc, и попробовать разные значения для $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";
?>
ПРИМЕЧАНИЕ. Сравнение действительно только тогда, когда каждая «ПЕРВАЯ ПОПРОБОВКА» очень близка к «ВТОРОЙ ПОПЫТКЕ». Если они значительно отличаются, это означает, что процессор был занят чем-то другим, выполняя сравнения, и поэтому результаты ненадежны, и эталонный тест следует запустить снова.