Аннотации, прежде всего, используются кодом, который осматривает другой код. Они часто используются для изменения (т.е. украшение или обертывание) существующие классы во времени выполнения для изменения их поведения. Платформы такой как JUnit и В спящем режиме аннотации использования для уменьшения объема кода, который необходимо записать сами для использования платформ.
Oracle имеет хорошее объяснение понятия и его значение в Java на их сайте.
Если вы скомпилируете два фрагмента и воспользуетесь рефлектором для дизассемблирования, вы увидите, что оба они получат практически один и тот же IL. Компилятор заменяет if / else
оператором case
.
Этот вид микрооптимизации вряд ли поможет вам, если у вас есть проблемы с производительностью.
Если у вас есть проблемы с производительностью, вам нужно профилировать программу и выяснить, где находятся узкие места.
Если у вас нет проблем с производительностью, перестаньте беспокоиться о написании кода, который легко понять.
1139585]
Теоретически, переключатель switch..case
должен быть быстрее, потому что это таблица поиска (как это чаще всего реализуется компилятором).
Однако, если вас беспокоит, что из этого работает быстрее, и это действительно узкое место в вашей программе, то у вас феноменально хороший проект.
Лучший способ окончательно ответить на этот тип вопросов - использовать тест.
Поместите каждую операцию в цикл, который выполняется 10 000 раз, запишите системное время до и после цикла. , вычтите время начала из времени окончания и сравните результаты каждого метода.
Операция с базой данных будет как минимум в 1000 раз медленнее, чем инструкция if / else
или case
.
В общем случае операторы case могут выполняться быстрее, так как компилятор или среда выполнения могут создавать таблицу переходов. Обычно для менее чем пяти элементов компилятор записывает оператор case как список операторов if / else. Если бы производительность вышеизложенного можно было измерить, я бы предположил, что производительность была бы идентичной, поскольку, вероятно, выполняются одни и те же инструкции.
MSIL имеет специальный код операции для операторов switch . Придется декомпилировать в MSIL, чтобы увидеть, создаст ли VB.Net таблицу переходов для трех элементов.