Untuk pengguna PHP tingkat lanjut, mengetahui perbedaan antara ==
dan ===
bertanya pada diri sendiri "apakah lebih cepat untuk membandingkan dengan ==
atau dengan ===
ketika saya yakin bahwa kedua operan adalah tipe yang sama?"
Jawaban singkat dan umum adalah: Tidak ada keuntungan kinerja dalam menggunakan ===
dalam hal ini, jadi sebaiknya Anda gunakan ==
.
Untuk yang tertarik melakukan benchmark sendiri, Anda dapat menggunakan kode berikut yang saya tulis ad-hoc dan mencoba nilai yang berbeda untuk $a
dan $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";
?>
CATATAN: Perbandingan ini hanya berlaku ketika setiap "COBA PERTAMA" sangat dekat dengan "COBA KEDUA". Jika mereka berbeda secara signifikan, itu berarti bahwa prosesor sedang sibuk melakukan sesuatu yang lain saat menjalankan perbandingan dan hasilnya hasilnya tidak dapat diandalkan dan benchmark harus dijalankan lagi.