Rumah >pembangunan bahagian belakang >tutorial php >Apakah perbezaan antara suis dan ifelse dalam PHP? Mana satu lebih cepat digunakan?

Apakah perbezaan antara suis dan ifelse dalam PHP? Mana satu lebih cepat digunakan?

藏色散人
藏色散人ke hadapan
2021-09-20 16:37:173581semak imbas

Yang manakah lebih pantas, suis PHP atau ifelse?

Untuk pertimbangan keadaan berbilang, kami menggunakan suis dan bukannya ifelse untuk menjadikan kod lebih jelas. Daripada manual PHP, saya mendapati bahawa seseorang telah membandingkannya, dan saya juga menjalankan eksperimen dengan kodnya:

$s = time();
for ($i = 0; $i < 1000000000; ++$i) {
    $x = $i % 10;
    if ($x == 1) {
        $y = $x * 1;
    } elseif ($x == 2) {
        $y = $x * 2;
    } elseif ($x == 3) {
        $y = $x * 3;
    } elseif ($x == 4) {
        $y = $x * 4;
    } elseif ($x == 5) {
        $y = $x * 5;
    } elseif ($x == 6) {
        $y = $x * 6;
    } elseif ($x == 7) {
        $y = $x * 7;
    } elseif ($x == 8) {
        $y = $x * 8;
    } elseif ($x == 9) {
        $y = $x * 9;
    } else {
        $y = $x * 10;
    }
}
print("if: " . (time() - $s) . "sec\n");

$s = time();
for ($i = 0; $i < 1000000000; ++$i) {
    $x = $i % 10;
    switch ($x) {
        case 1:
            $y = $x * 1;
            break;
        case 2:
            $y = $x * 2;
            break;
        case 3:
            $y = $x * 3;
            break;
        case 4:
            $y = $x * 4;
            break;
        case 5:
            $y = $x * 5;
            break;
        case 6:
            $y = $x * 6;
            break;
        case 7:
            $y = $x * 7;
            break;
        case 8:
            $y = $x * 8;
            break;
        case 9:
            $y = $x * 9;
            break;
        default:
            $y = $x * 10;
    }
}
print("switch: " . (time() - $s) . "sec\n");

Selepas menggelung 1000000000 kali dan menambah operasi pada setiap syarat penghakiman, kami Hasilnya ialah suis itu adalah lebih cekap dan berjalan lebih pantas. Hasilnya pada komputer saya ialah:

// if: 301sec
// switch: 255sec

Walaupun suis lebih cekap, ada juga perkara yang perlu diberi perhatian Pertama, nilai hakim hanya boleh nombor, nombor titik terapung atau rentetan. Kedua, setiap penghakiman adalah == penghakiman biasa, iaitu, keputusan penghakiman berikut tidak semestinya sama dengan anda:

$string = "2string";

switch ($string) {
    case 1:
        echo "this is 1";
        break;
    case 2:
        echo "this is 2";
        break;
    case '2string':
        echo "this is a string";
        break;
}

// this is 2

Ya, ia masih merupakan jenis == perbandingan masalah penukaran paksa ialah apabila membandingkan nilai rentetan dan int, mereka dipaksa kepada jenis int Hasil penukaran paksa "2 rentetan" adalah tepat 2. Oleh itu, apabila menggunakan suis, anda harus memastikan bahawa nilai perbandingan adalah konsisten dengan jenis setiap kes, jika tidak, ralat yang tidak dapat diramalkan mungkin berlaku.

参考代码:https://github.com/zhangyue0503/dev-blog/blob/master/php/201911/source/PHP%E7%9A%84switch%E5%92%8Cifelse%E8%B0%81%E6%9B%B4%E5%BF%AB%EF%BC%9F.php

Pembelajaran yang disyorkan: "Tutorial Video PHP"

Atas ialah kandungan terperinci Apakah perbezaan antara suis dan ifelse dalam PHP? Mana satu lebih cepat digunakan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:segmentfault.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam