Другие языки программирования и технологии

C++. В операторе switch нельзя разве использовать case x? а x пробежать в цикле for?

Чтобы не перечислять case 1: case 2 ...case n, а все эти выборы в цикле прокрутить.
"все ветвления приводят к сбросу конвейера процессора. " - ну да, надо в языке учитывать реализацию процессора? Все это очень спорно и длина конвейера не такая малая, чтобы приводить к сбросу на таких малых прыжках, так что прыжок прыжку рознь.
Ну а кол. операций от такого улучшения поглядите сами

Ну а "case 1: case 2 ...case n" придуман именно для того, чтобы сразу прыгнуть на нужный кусок а не делать 10000 if пока доберешься до нужного 9999. Ну и иногда если у меня и есть несколько if(x) то в начале пишу такой x который в данном условие более вероятный по условию, чтобы не происходило лишних сравнений, то же самое как в x1 || x2 || x3 ||... || xn размещаешь x1 который более часто и вероятно даст true
Rovshan Nabiyev
Rovshan Nabiyev
77 211
Лучший ответ
Игорь Ковешников Вообще одинаково, если учесть, что jmp = 2 цикла. =)

А когда нужно в большом массиве всех посравнивать и выполнить такое-же действие, то реализация с вычитанием оказывается нифига себе быстрее, чем с условными конструкциями)
Нельзя. В case должны быть константы. Если у тебя диапазоны значений, лучше использовать несколько if.
Нахрена тогда вообще нужен case?
case нужен тогда и только тогда, когда выражение которое должно быть выполнено на каждый n существенно различается.
Если его можно представить однозначно некой универсальной формулой для любого n, то тут не нужен ни case, ни цикл.

Кроме того не забываем, что все ветвления приводят к сбросу конвейера процессора. Поэтому нужно избегать их как только это возможно.
Например вместо if (x==0) y=1 else y=2 следует писать y=2-(x==0).
Алексей Литвинов а если у меня 50 разных вариантов выбора, неужели нудно писать 50 строчек кода?
Просто Руслан Это в идеале конечно, решать задачи одной математикой, но не всегда возможно. К сбросу конвейера приводят не все ветвления, а только неправильно спрогнозированные.
А зачем это нужно?
Алексей Литвинов меня 50 разных вариантов выбора, неужели нудно писать 50 строчек кода?