Rumah >pembangunan bahagian belakang >tutorial php >Adakah `isset` Lebih Cepat daripada `in_array` untuk Menyemak Elemen Tatasusunan?

Adakah `isset` Lebih Cepat daripada `in_array` untuk Menyemak Elemen Tatasusunan?

Susan Sarandon
Susan Sarandonasal
2024-11-11 11:02:03457semak imbas

Is `isset` Faster than `in_array` for Checking Array Elements?

Perbandingan Kelajuan: in_array vs. isset

Apabila bekerja dengan tatasusunan yang besar, adalah penting untuk mengoptimumkan prestasi kod. Manakah yang lebih pantas: fungsi in_array atau binaan isset?

in_array:

Fungsi ini melakukan carian linear, berulang melalui tatasusunan untuk mencari padanan. Ia mempunyai kerumitan masa O(n), dengan n ialah saiz tatasusunan.

isset:

isset, sebaliknya, menggunakan cincang carian untuk menentukan sama ada kunci tertentu wujud dalam tatasusunan bersekutu. Ini menjadikannya lebih pantas daripada in_array, dengan kerumitan masa yang berterusan O(1).

Ujian Prestasi:

Untuk menunjukkan perbezaan kelajuan ini, kami boleh menjalankan penanda aras:

$a = array();
for ($i = 0; $i < 10000; ++$i) {
    $v = rand(1, 1000000);
    $a[$v] = $v;
}

$start = microtime(true);

for ($i = 0; $i < 10000; ++$i) {
    isset($a[rand(1, 1000000)]);
}

$total_time = microtime(true) - $start;
echo "isset: " . number_format($total_time, 6) . PHP_EOL;

$start = microtime(true);

for ($i = 0; $i < 10000; ++$i) {
    in_array(rand(1, 1000000), $a);
}

$total_time = microtime(true) - $start;
echo "in_array: " . number_format($total_time, 6) . PHP_EOL;

Keputusan:

Keputusan ujian menunjukkan bahawa isset adalah jauh lebih pantas daripada in_array, menunjukkan kelebihan kerumitan masa yang berterusan.

Kesimpulan:

Apabila menyemak kewujudan elemen dalam tatasusunan, isset ialah pilihan pilihan kerana prestasinya yang lebih pantas. Walau bagaimanapun, jika susunan elemen adalah penting, maka in_array hendaklah digunakan kerana ia mengekalkan susunan elemen.

Atas ialah kandungan terperinci Adakah `isset` Lebih Cepat daripada `in_array` untuk Menyemak Elemen Tatasusunan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn