Который быстрее - если.. еще или Выбор.. случай?

Аннотации, прежде всего, используются кодом, который осматривает другой код. Они часто используются для изменения (т.е. украшение или обертывание) существующие классы во времени выполнения для изменения их поведения. Платформы такой как JUnit и В спящем режиме аннотации использования для уменьшения объема кода, который необходимо записать сами для использования платформ.

Oracle имеет хорошее объяснение понятия и его значение в Java на их сайте.

6
задан RedsDevils 11 November 2009 в 04:58
поделиться

4 ответа

Если вы скомпилируете два фрагмента и воспользуетесь рефлектором для дизассемблирования, вы увидите, что оба они получат практически один и тот же IL. Компилятор заменяет if / else оператором case .

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

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

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

1139585]

13
ответ дан 8 December 2019 в 02:35
поделиться

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

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

10
ответ дан 8 December 2019 в 02:35
поделиться

Лучший способ окончательно ответить на этот тип вопросов - использовать тест.

Поместите каждую операцию в цикл, который выполняется 10 000 раз, запишите системное время до и после цикла. , вычтите время начала из времени окончания и сравните результаты каждого метода.

4
ответ дан 8 December 2019 в 02:35
поделиться

Операция с базой данных будет как минимум в 1000 раз медленнее, чем инструкция if / else или case .

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

MSIL имеет специальный код операции для операторов switch . Придется декомпилировать в MSIL, чтобы увидеть, создаст ли VB.Net таблицу переходов для трех элементов.

8
ответ дан 8 December 2019 в 02:35
поделиться
Другие вопросы по тегам:

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