Top.Mail.Ru
Ответы

Отличаются ли конструкции switch-case и if-else в плане производительности? Switch это просто замаскированный if-else?

По дате
По Рейтингу
Аватар пользователя
Новичок

Однозначно отличаются в них даже буквы разные.
Разные механики работают по разному иначе они были бы одинаковыми и работали одинаково.

Кто вызывал К. О. ?

Аватар пользователя
Гений

Самое "простое" посмотреть что генерирует компилятор.
Вам НИКТО не скажет что лучше в ЛЮБОМ языке при любом компиляторе/интерп. при ЛЮБЫХ условиях. Всё зависит от компилятора/интерпр.
В этом и есть в частности фишка профи - знать что работает под капотом и как. И во что примерно переварит Ваш код. В т. ч. н-р C/C++ когда н-р Вы заполняете скажем _таблицу_ 5x5 значениями - Вы можете вообще циклов не увидеть. Таблица УЖЕ будет заполнена БЕЗ циклов. Так эффективнее при небольших таблицах.

Аватар пользователя
Мудрец

switch-case компилятор может превратить в хеш-таблицу. Даже если там тысячи веток, это будет работать гораздо быстрее, чем куча if else.

Аватар пользователя
Просветленный

по идее свитчкейс чуть-чуть быстрее, т. к. его можно реализовать не как цепочку проверок условий (порядок сравнений не важен + значения кейсов примитивные, можно бахнуть что-то типа таблицы переходов), но грамотный компилятор и цепочку if-else может соптимизировать, если она по ограничениям подходит

Аватар пользователя
Просветленный

ничем толком не отличаются