If vs Case заявления [закрыто]

13
задан Brad Mace 12 July 2011 в 01:41
поделиться

7 ответов

Используйте тот, который наиболее читается в данном контексте.

25
ответ дан 1 December 2019 в 17:16
поделиться

В некоторых языках, например в C, переключатель может быть быстрее, потому что он обычно реализуется с помощью таблицы переходов . Современные компиляторы иногда достаточно умны, чтобы использовать один для нескольких if , хотя

И в любом случае это, вероятно, не имеет значения, микрооптимизации (почти) никогда не полезны.

27
ответ дан 1 December 2019 в 17:16
поделиться

Я добавлю сюда некоторые ответы. Это не вопрос производительности, и если вас действительно беспокоит производительность ... напишите тест и посмотрите, какой из них быстрее.

Однако это должен быть вопрос о том, что лучше использовать, а что лучше. Если у вас несколько операторов if / else, сделайте себе одолжение и используйте оператор case. Если это простой if / else, тогда используйте if / else. Вы поблагодарите себя позже.

0
ответ дан 1 December 2019 в 17:16
поделиться

Если у вас более одного ifelse, я рекомендую переключить / выбрать. Опять же, это не всегда работает.

Предположим, вам что-то в этом роде (не рекомендуется, но только для примера)

If a > 0 and b > 0 then

' blabla
ElseIf b = -5 then

' blabla2
ElseIf a = -3 and b = 6 then

End If

Использование переключателя / выбора - НЕ лучший вариант. Однако при запросе конкретного значения для такой переменной

select case a

        case 1:
           ' blabla
        case 2:
           ' blabla2
        case 3:
           ' blabla3
        case 4:
           ' blabla4
        case else:
end select

в этом случае я настоятельно рекомендую его, потому что он более читабелен для других.

7
ответ дан 1 December 2019 в 17:16
поделиться

Некоторые языки программирования ограничивают возможность использования операторов switch / case . Например, во многих C-подобных языках значения case должны быть постоянными целыми числами, известными во время компиляции.

Характеристики производительности могут различаться между двумя методами, но вы вряд ли чтобы иметь возможность заранее предсказать, что они из себя представляют. Если производительность действительно критична для этого кода в вашем приложении, убедитесь, что вы профилировали оба подхода, прежде чем принимать решение, поскольку ответы могут вас удивить.

Обычно разница в производительности будет незначительной, и поэтому вам следует выбрать наиболее читаемый, понятный и обслуживаемый код , как и в любой другой ситуации программирования.

5
ответ дан 1 December 2019 в 17:16
поделиться

case или switch утверждения на самом деле являются лишь особыми случаями структур "if ... elseif...", которые можно использовать, когда один и тот же объект сравнивается с разным простым значением в каждой ветви, и это всё, что делается. Самое приятное в их использовании то, что большинство компиляторов могут реализовать их в виде таблиц переходов, так что фактически все 200 (или сколько бы то ни было) проверок ветвей могут быть реализованы как одна операция индексации таблицы, так и скачок.

По этой причине вам бы хотелось использовать утверждение case, когда

  1. может и
  2. иметь достаточно большое количество веток.

Чем больше число "elseif", тем более привлекательным является утверждение case.

.
4
ответ дан 1 December 2019 в 17:16
поделиться

Операции по делу, как правило, предпочтительнее с точки зрения читабельности и, как правило, быстрее, если есть разница в скорости, но это относится не ко всем возможным средам.

Скорее всего, можно написать тест, который покажет, какая из них быстрее для вашего окружения, но будьте осторожны с оптимизациями кэширования и компилятора.

3
ответ дан 1 December 2019 в 17:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: