Вопрос № 28155: Уважаемы эксперты, скажите в чем кардинальное различие использования операторов case и if...elseif? Чем они отличаются, кроме того что они имеюи различие в форме записи и в case можно не ставить break, и как следствие делать хитрющщие условные перехо...
Вопрос № 28.155
Уважаемы эксперты, скажите в чем кардинальное различие использования операторов case и if...elseif? Чем они отличаются, кроме того что они имеюи различие в форме записи и в case можно не ставить break, и как следствие делать хитрющщие условные переходы. Может какой работает быстрее или предпочтительнее использовать?
Отвечает: Tsechoev Bagaudin
Здравствуйте, Дорошенко Иван!
В том случае, если нужно сравнивать какую-то переменную с большим количеством значений, удобней использовать и работает быстрее case. Если объяснять просто, то представьте себе что вы:
1. Сравниваете какой-то предмет на схожесть с другими, при этом держите образец в руках и подбираете к нему те которые вам доступны.
2. Каждый раз берете по два предмета и сравниваете их до тех пор пока, у вас в руках не окажется два одинаковых предмета. (в случае с else if).
Образ конечно не абсолютно точен. Одним словом, в случае использования case уже известный адрес памяти сравнивается с другими ячейками памяти (которые расположены рядом), а в случае с if elseif каждый раз идет взятие адреса переменной, т.е. лишнее обращение к памяти. Не скажу что использование той или другой конструкции существенно снизит или повысит производительность кода, но желательней использовать и удобней case, скажем еще - и меньше печатать код :)
Удачи!
--------- Есть только одно зло - невежество, и только одно благо - знания
Ответ отправил: Tsechoev Bagaudin (статус: Студент)
Отправлен: 23.10.2005, 05:22
Отвечает: Ерёмин Андрей
Здравствуйте, Дорошенко Иван!
Да нет, просто case в некоторых случаях удобнее использовать, чем if..else. Если, к примеру, требуется проверить, совпадает ли значение переменное с каким-либо значением (или 2 таких сравнения), то нужно использовать if..else и даже не заморачиваться. Ну а если нужно сравнить переменную с десятком значений, то тут case'ом легко выйдет, а на if..else слишком большой и нечитабельный код получится. Разницы в скорости их работы абсолютно нет.
--------- Бог создал мир за семь дней и до сих пор система работает, не требуя перезагрузки, потому что у него не было необходимости поддерживать совместимость с предыдущими версиями...
Ответ отправил: Ерёмин Андрей (статус: Специалист)
Отправлен: 23.10.2005, 08:25
Отвечает: Драк Георгий
Здравствуйте, Дорошенко Иван!
Впринципе разницы в скорости работы нету. Но case удобнее использовать при большом количестве значений, с которыми нужно сравнить значение переменной. Если будешь юзать if...else - получиться "мега-конструкция", которая будет мягко говоря трудно читаемая. А с case будет проще и аккуратней. Зато если нужно сделать 1-2 проверки - то лучше заюзать if...else и всё. Так что выбирай в зависимости от ситуации.
--------- Sonic always help you, if he wish...
Ответ отправил: Драк Георгий (статус: 2-ой класс)
Отправлен: 23.10.2005, 10:55
Ответ отправил: Licvidator (статус: Профессор)
Отправлен: 23.10.2005, 12:49
Отвечает: SKE
Здравствуйте, Дорошенко Иван!
В чем разница? IF... ElseIF - это условие, а Case - это выбор. Если нужно проверить одно значение, допустим $name == "Ivan", то удобней пользоваться (даже не удобней, а необходимо) оператором IF. А если Нам надо проверить одну переменную и у нее может быть 1000 значений, то проще поставить Case, чем 1000 операторов IF.
Надеюсь я понятно объяснил???
Ответ отправил: SKE (статус: Студент)
Отправлен: 24.10.2005, 06:17
Отвечает: Lector
Здравствуйте, Дорошенко Иван!
Использовать нужно тот вариант, который будет легче читаться посторонним программистом.
Кардинального различия в быстродействии нет.
--------- Хочешь помочь старику - сделай вместо него. Хочешь помочь новичку - сделай вместе с ним. Хочешь помочь мастеру - отойди и не мешай, а хочешь помочь дураку - сам дурак.
Ответ отправил: Lector (статус: 6-ой класс)
Отправлен: 24.10.2005, 15:09
При небольшом колличестве выборов эффективнее if-elseif-else при большом - switch
под эффективностью я имею ввиду не только быстродействие кода, но и время-удобство требуемое для дальнейшего изменения кода и понимания его другим програмистом
Ответ отправил: Dmitrij Ivanov (статус: 1-ый класс)
Отправлен: 24.10.2005, 16:31