switch или if

 

Привет! Допустим есть переменная Х которая может быть либо 0 либо 1, какой оператор разумнее использовать switch или if?

Также хотелось бы рассмотреть вариант переменной с более широкой амплитудой значений...

 
Maksim Neimerik:

Привет! Допустим есть переменная Х которая может быть либо 0 либо 1, какой оператор разумнее использовать switch или if?

Также хотелось бы рассмотреть вариант переменной с более широкой амплитудой значений...

Странно такой вопрос от человека с таким рейтингом)

В машинном коде если не ошибаюсь будет условный переход и коммутируемый переход. По производительности в общем случае одно и тоже.

По удобству читаемости и поддерживаемости кода - на ваш вкус.

Главное отличие - в switch  возможность выполнения нескольких веток без лишних условных проверок. В зависимости от задачи это м.б. вообще не нужно, так и жизненно необходимо. И если это важно то тут уже будет играть роль разница в производительности.

 

Найрамдал! (по монгольски- привет)


я всегда решаю вопросы по бейсику.

IF  THEN  ELSE  GOTO.

 
Aleksey Mavrin:

Странно такой вопрос от человека с таким рейтингом)

В машинном коде если не ошибаюсь будет условный переход и коммутируемый переход. По производительности в общем случае одно и тоже.

По удобству читаемости и поддерживаемости кода - на ваш вкус.

Главное отличие - в switch  возможность выполнения нескольких веток без лишних условных проверок. В зависимости от задачи это м.б. вообще не нужно, так и жизненно необходимо. И если это важно то тут уже будет играть роль разница в производительности.

Ну почему же старанно?:) Я просто не стесняюсь спрашивать... А вопрос касается именно производительности...
 
Maksim Neimerik:
Ну почему же старанно?:) Я просто не стесняюсь спрашивать... А вопрос касается именно производительности...

Ну раз производительности тогда я думаю так - если серия if else простая проверка на равно, без И ИЛИ и пр. и если в switch после каждого кейса брейк, то будет на 100% совпадать и машинный код и следовательно производительность.

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

 
Maksim Neimerik:
Ну почему же старанно?:) Я просто не стесняюсь спрашивать... А вопрос касается именно производительности...

в случае 0 и 1 как у вас, подозреваю почти без разницы.

В случае множества значений однозначно switch

 
TheXpert:

в случае 0 и 1 как у вас, подозреваю почти без разницы.

В случае множества значений однозначно switch

если значения допустим целые от 0 до 10 (да любые) и нет доп.условий как я описал, то чем лучше switch ? В нём разве меньше элементарных условных проверок будет?

 

Я не большой знаток в кодинге конечно.

Думаю, что компилятор для каждого варианта подготовит одинаковую цепочку действий для процессора.

Разницы скорее всего не будет.

 

MQL4-5 -  урезанная версия бейсика.

Вся красота бейсика нет.

да многое упростили,

но графики мало.


где PLOT ?

где CIRCLE ...

без них тоскаа)))

 
Uladzimir Izerski:

Я не большой знаток в кодинге конечно.

Думаю, что компилятор для каждого варианта подготовит одинаковую цепочку действий для процессора.

Разницы скорее всего не будет.

Не совсем так. свитч просто проверяет на равно, а в if можно и больше меньше и всякие И ИЛИ загнать. Поэтому сравнивать имеет смысл только в одинаковых условиях, как я описал выше.

 

много раз уже писалось (погуглите) - switch будет работать гораздо быстрее if-а

но switch работает только с целыми константами

Причина обращения: