![]() |
|
||||||||||
|
|||||
|
loading 50%
|
Полная конструкция оператора switch - переключателя, предпологает наличие переменной, в зависимости от значений которой, ей сопоставляется исчерпывающий набор правил. В этом его суть - дает унифицированный, но часто избыточный код.
Полная конструкция if - условный оператор, служит для построения ветвящихся логических структур, где условия ветвления алгоритма могут иметь более гибкий характер. Такие ветвления более характерны для линейного программирования. |
|
|||||
|
Регистрация: Apr 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 355
|
Я бы сказал так)
Разница между if, ? и switch/case в том как вы ими пользуетесь) А по сути это одно и то же. Эффективность работы зависит больше от рационально построенного условия чем от того, какой из вариантов для анализа вы выберете.
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ |
|
|||||
|
loading 50%
|
Предположим, нужно проверить переменную - если она вне диапозона, то присвоить ей новое значение и продолжить с ним. - Криво как то писать свич для одного условия.
|
|
|||||
|
стервочка (я мужик)
|
godknowsiamgood, начнём с того, что сишные компиляторы самые умные в мире. лучше их никто код не оптимизирует. то что Вам где-то написали в открытую, что один кусочек во что-то переделывается, это ещё ничего не значит. на самом деле там переделывается всё и вся. одни тэмплэйты и и таблицы виртуальных методов чего стоят. от оригинального кода там и места живого не остаётся. из-за этого дебажить сишный код может только очень упорный человек, или очень талантливый. в болие-менее сложном проекте, ошибки из-за многоуровневой системы компиляции просто так не понять. на пример, описываете Вы метод add, а в ошибке видите что-то типа My_foo_ASD_namespace_Point_add_My_foo_ASD_namespace_PolatPoint. человек не понимающий всю цепочку работы компилятора, фиг поймёт, что это автосгенерированное имя основанное на куче других автосгенерированных имён, что бы создать уникальность, зато мы имеем темплейты. парой строчек можем описать неизвестное множество сущностей, которые будут создаваться и проверяться не в рантайме (как в джаве или АС3), а на этапе компиляции, и про то что они будут реально типизированы, а не мнимо, я вообще молчу. оптимизация уровня inline-методов, в сях достигла совершенства
компиляторы начали сами считать какой метод сделать inline. и и даже если Вы сами его таковым не пометите, компилятор может оказаться умнее. и т.д. и т.п. в общем ставить в пример компиляторы си, не стоит. слишком разных размеров ягодки. в такие таблицы вобще не только кэйсы переделываются и не всегда. |
|
|||||
|
Но если каждая милисекунда процессорного время на счету - то во время оптимизации можно и в switch это переписать, ради чего и был стартанут этот топик.
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
|
loading 50%
|
Psycho Tiger, есть сильные сомнения, что свич в таких случаях сработает быстрее, а главное что программист вообще поймет логику работы своего алгоритма. Я к примеру, если вижу свич, то первая мысль - может еще чего в него дописать - подключить, а одиночный иф - видится вроде предохранителя на проводе. (пишу глядя на сетевой фильтр).
|
|
|||||
|
Регистрация: Apr 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 355
|
Построение ранга для запросов
Сложные условия ну а свитч это перебор вариантов. Если планируется что в будущем узел с условиями будет расширяться то я предпочитаю использовать свитч, его модифицировать проще чем клубок из ифов. А по поводу того что производительней это боюсь вам даже разработчики не скажут. В каждом отдельном случае эффективность будет определяться множеством условий. Если вам нужна оптимизация ищите в тех местах где этого действительно можно добиться. Тот же код из первой строчки. Если диапазон большой скажем миллиард значений, то весь миллиард шагов делать проверку того что это первый фрагмент не стоит. Либо первый элемент(без запятой) добавить отдельно, либо просто сложить все значения а первую запятую удалить пост действием. Тем самым вы исключите 1 млрд проверок и замените их на конкатенацию.
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ |
![]() |
![]() |
Часовой пояс GMT +4, время: 02:57. |
|
|
« Предыдущая тема | Следующая тема » |
|
|