Affect_Bond
Умник
Одни говорят что switch намного быстрее if /else if ,а другие наоборот говорят медленый if / else if намного быстрее switch.
Я решил проверить:
1.У нас будет с большими значениями. switch у нас будет брать значение var , а case переключать значение с 0 до 1500.
Как вы видите мы используем вариант именно с case 0..300 (то есть там где 2 точки - там 100 и 200) думаю понятно.
Теперь код для if / else if тоже с большим значением.
время переключения switch: 124
время переключения Else if: 23
время переключения if: 24
Как видите тут switch намного медленнее if / else if
Меняем способ переключения на:
время переключения switch: 10
время переключения Else if: 24
время переключения if: 28
Как мы видим тут switch уже выигрывает.Так что прежде чем говорить что switch быстрее if / else if.
Или еще пример switch vs if
На данном примере видно, что в функции со switch, он будет возвращать определенное число каждому из промежутка.
Switch : 19
if : 2
Ну вот и все...
Автор: Affect_Bond
Я решил проверить:
1.У нас будет с большими значениями. switch у нас будет брать значение var , а case переключать значение с 0 до 1500.
PHP:
switch ( var )
{
case 0..300: return 1 ;
case 400..700: return 2 ;
case 800..1100: return 3 ;
case 1200..1500: return 4 ;
default: return 1 ;
}
return 0;
Теперь код для if / else if тоже с большим значением.
PHP:
if ( var > 0 && var <= 200 ) return 1 ;
else if ( var > 300 && var <= 500 ) return 2 ;
else if ( var > 600 && var <= 800 ) return 3 ;
else if ( var > 900 && var <= 1100 ) return 4 ;
return 0;
время переключения Else if: 23
время переключения if: 24
Как видите тут switch намного медленнее if / else if
Меняем способ переключения на:
PHP:
case 0,100,200,300: return 1 ;
case 400,500,600,700: return 2 ;
case 800,900,1000: return 3 ;
case 1100,1200,1300: return 4 ;
default: return 1 ;
время переключения Else if: 24
время переключения if: 28
Как мы видим тут switch уже выигрывает.Так что прежде чем говорить что switch быстрее if / else if.
Или еще пример switch vs if
PHP:
MyFuncSwitch ( var ) {
switch ( var ) {
case 0..500: return 1 ;
case 501..1000: return 2 ;
case 1001..1500: return 3 ;
case 1501..2000: return 4 ;
case 2001..2500: return 5 ;
default: return 1 ;
}
return false ;
}
MyFuncIf ( var ) {
if ( var > 0 && var <= 500 ) return 1 ;
else if ( var > 500 && var <= 1000 ) return 2 ;
else if ( var > 1000 && var <= 1500 ) return 3 ;
else if ( var > 1500 && var <= 2000 ) return 4 ;
else if ( var > 2000 && var <= 2500 ) return 5;
return false ;
}
Switch : 19
if : 2
Ну вот и все...
Автор: Affect_Bond
