|
3 / 3 / 4
Регистрация: 23.06.2014
Сообщений: 126
|
|||||||||||
If или switch().case. Что быстрее07.07.2014, 10:22. Показов 24039. Ответов 27
Метки нет (Все метки)
Есть два кода. Первый:
0
|
|||||||||||
| 07.07.2014, 10:22 | |
|
Ответы с готовыми решениями:
27
case outside of switch ? Что за ошибка? Что делают операторы switch/case |
|
Модератор
13769 / 10962 / 6491
Регистрация: 18.12.2011
Сообщений: 29,236
|
|
| 07.07.2014, 10:24 | |
|
Скорее всего, разницы в скорости Вы не заметите.
Однако, второй код более нагляден.
1
|
|
|
106 / 87 / 13
Регистрация: 29.08.2012
Сообщений: 538
|
|
| 07.07.2014, 10:36 | |
|
1
|
|
|
|
|
| 07.07.2014, 10:37 | |
Сообщение было отмечено mihalech19 как решение
Решение
В первом случае все if будут проверяться всегда.
Во втором случае все case будут пройдены только при а = 4. Например, если а = 2, то отработает только первый case и мы выйдем по break. При а = 3 отработают два первых case. В среднем - второй случай быстрей.
2
|
|
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||
| 07.07.2014, 10:37 | ||
Сообщение было отмечено Kastaneda как решение
Решение
Ну и каждое ветвление награждает вас 50% бонусом к шансу получить неверным предсказанием перехода по башке. Что не лучшим образом сказывается на производительности. Поэтому лучше их без нужды не плодить.
2
|
||
|
106 / 87 / 13
Регистрация: 29.08.2012
Сообщений: 538
|
|
| 07.07.2014, 10:41 | |
|
1
|
|
|
106 / 87 / 13
Регистрация: 29.08.2012
Сообщений: 538
|
|
| 07.07.2014, 10:47 | |
|
А, чьёрт действительно.
1
|
|
|
Модератор
13769 / 10962 / 6491
Регистрация: 18.12.2011
Сообщений: 29,236
|
|||||||||||
| 07.07.2014, 11:18 | |||||||||||
|
Кстати, не так-то просто иногда развернуть в if, например:
0
|
|||||||||||
|
106 / 87 / 13
Регистрация: 29.08.2012
Сообщений: 538
|
|
| 07.07.2014, 11:21 | |
|
кейсы без брейков жесть какая-та имхо
0
|
|
|
Модератор
13769 / 10962 / 6491
Регистрация: 18.12.2011
Сообщений: 29,236
|
|||||||
| 07.07.2014, 11:34 | |||||||
1
|
|||||||
|
|
|
| 07.07.2014, 11:52 | |
|
Все промышленные компиляторы имеют мощный оптимизатор, который нивелирует любые ухищрения программиста сделать код эффективнее. Реально влиять на эффективность можно, если вы пишете на ассемблере. А на языке высокого уровня лучше обращать внимание на прозрачность кода, на соответствие его корпоративным стандартам и на облегчение сопровождения. Об эффективности нужно думать на этапе архитектурного проектирования. А когда дело дошло до языка си, то простое наличие комментариев важнее эффективности.
1
|
|
|
106 / 87 / 13
Регистрация: 29.08.2012
Сообщений: 538
|
||
| 07.07.2014, 11:54 | ||
|
1
|
||
|
0 / 0 / 0
Регистрация: 02.07.2014
Сообщений: 6
|
|
| 07.07.2014, 15:34 | |
|
в данном случае разницы никакой для человеческого восприятия скорости, однако теоретически кейс быстрее
0
|
|
|
4575 / 2773 / 491
Регистрация: 28.04.2012
Сообщений: 8,760
|
||
| 07.07.2014, 17:49 | ||
|
0
|
||
|
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
|
||
| 07.07.2014, 18:30 | ||
![]() ------ А вообще все эти рассуждения о скорости не имеют смысла без привязки к конкретному компилятору и его оптимизации. Если хочется адекватных оценок, то берем компилятор, конкретные ключи компиляции, смотрим ассемблер и делаем выводы. Все остальное от лукавого.
0
|
||
|
Модератор
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,852
|
||||
| 07.07.2014, 18:48 | ||||
посмотри что будет если во первом коде a изначальна равна 2 в результате она будет равна 8 ![]() чего не наблюдается во втором коде при case 0 1 2 3 4 скорее всего switch превратится в таблицу переходов у Evg в блоге была статья на эту тему если найду кину ссылку Добавлено через 1 минуту кстати в шарпе её кастрировали и приходится дублировать код Добавлено через 3 минуты вот ссылка https://www.cyberforum.ru/blogs/18334/blog91.html
0
|
||||
|
|
||||||||||||
| 07.07.2014, 18:49 | ||||||||||||
0
|
||||||||||||
|
Модератор
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,852
|
||||||||||||||
| 07.07.2014, 18:55 | ||||||||||||||
![]() но посмотри на код по ссылке
Что делает данный код и зачем такое кому-нибудь может понадобиться? Добавлено через 2 минуты
0
|
||||||||||||||
|
|
|||||||||||
| 07.07.2014, 19:00 | |||||||||||
|
Ещё неплохой способ "we need to go deeper":
Юзаем switch-case: Кликните здесь для просмотра всего текста
Юзаем if'ы: Кликните здесь для просмотра всего текста
Компилятор GNU GCC C++ . Особо разницы не заметите, разве что во 1-м случае используются прыжки je, а во 2-м - jne.
0
|
|||||||||||
| 07.07.2014, 19:00 | |
|
Помогаю со студенческими работами здесь
20
Оптимальная конструкция switch-case-while / while-switch-case Статический хеш или switch-case/if-else для выбора
Что быстрее switch(enum) или if else?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|