Когда программист испытывает затруднения при поиске ошибки, это значит, что он ищет не там, где следует.


03.09.2009, 12:29

Ifelse VS Switch. Что быстрее?

Вчера на вечернем чаепитии пивоупотреблении мне было поручено провести простенький тест на PHP, и выяснить.. что же всё-таки быстрее, конструкции вида ifelse или switch при прочих равных условиях?)Итак, скрипты

ifelse switsh

for($i=0;$i<10000000;$i++){
    if($j==0)
        $x=0;
    elseif($j==1)
        $x=1;
    elseif($j==2)
        $x=2;
    elseif($j==3)
        $x=3;
}

for($i=0;$i<10000000;$i++)switch($j){
        case 0: $x=0;
            break;
        case 1: $x=1;
            break;
        case 2: $x=2;
            break;
        case 3: $x=3;
            break;
    }

 

 

 

 

 

 

 

 

 

Как видно, они даже по размеру практически идентичны.

Запускал попеременно, каждый скрипт по 3 раза. Исполнялся на athlon 64x2 3800, 2Гб DDR667, Linux 2.6.30.5, PHP 5.2.6.

Сумма времени исполнения:

1 скрипт 17.826 сек

2 скрипт 18.217 сек

Результат, если честно, меня удивил. Я ставил на switch. В итоге, ifelse быстрее на 2%, чем switch. Что юзать - разницы нет)

Теги: php тест

Комментарии



Да, забыл.. Изначально переменная $j=3 была...

Тоже ставил на switch, т.к. "if else" уже старая конструкция. Надо на PHP4 проверить...


Старое лучше новых двух)
Вы должны зарегистрироваться, чтобы оставлять комментарии

Строительство и проектирование объектов. Нижний Новгород


Rambler's Top100