Für fortgeschrittene PHP-Benutzer, die den Unterschied zwischen ==
und kennen ===
und sich fragen: "Ist es schneller, mit ==
oder zu vergleichen, ===
wenn ich sicher bin, dass beide Operanden vom gleichen Typ sind?"
Die kurze und allgemeine Antwort lautet: In diesen Fällen gibt es keinen Leistungsgewinn bei der Verwendung ===
, daher sollten Sie wahrscheinlich verwenden ==
.
Für diejenigen, die daran interessiert sind, es selbst zu vergleichen, können Sie den folgenden Code verwenden, den ich ad-hoc geschrieben habe, und verschiedene Werte für $a
und ausprobieren $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";
?>
HINWEIS: Der Vergleich ist nur gültig, wenn jeder "ERSTE VERSUCH" seinem "ZWEITEN VERSUCH" sehr nahe kommt. Wenn sie sich erheblich unterscheiden, bedeutet dies, dass der Prozessor während der Ausführung der Vergleiche etwas anderes getan hat. Daher sind die Ergebnisse unzuverlässig und der Benchmark sollte erneut ausgeführt werden.