Обе одинаковы.
Потери в производительности могут быть у второго варианта, но не из-за его синтаксиса или компиляции, а того, что в качестве значения1 может быть не константа, а скажем _remoteObject.CallToVeryLongExecutingProc(myBigDatasetAsParameter). А сами перескоки с варианта на вариант в обоих случаях практически идентичны и на современных машинах за такое вообще не парятся (да и на двушке в TurboPascal никако существенной разницы между case N of ;; и if then else if ... разницы ощутимой не было). Как удобно, так и пишите.
Конечно, в данном случае быстрее будет case, в случае с IF многократно производиться проверка условия, а в CASE она тоже происходит, но оптимизируется при компиляции.
Тем более с if-ми код становиться не читабильным!
Сравнение swtch.. case.... и if (условие 1) ... else if (усл
Ага, только вот если if будет вариантов на 100, вот тогда сравните!
ИМХО и не только, если 3 варианта — еще можно if, а больше — только свитч, потому как это прямой переход (типа хеша). Разница была и есть. Но в разных условиях — разная, например если такие конструкции выполняются раз-два за время замера времени работы, то можно эту самую разницу и не почувствовать, а если в цикле раз 100... да вариантов побольше...
А вообще, смотрите скомпиленый код — сразу все ясно.
Never underestimate those behind you...
Re: Сравнение swtch.. case.... и if (условие 1) ... else if
Здравствуйте, Paul Poloziouk, Вы писали:
PP>А что будет быстрее?
PP>switch(объект) PP>...
PP>if (объект == значение 1) PP>...
Ну во первых и то и другое будет компилиться в IL код, в котором switch не совсем соответствует switch C#-а. При соблюдении некоторых условий C#(swith) скомпилится в IL(swith), и в этом случае будет выигрыш в производительности. Ну а в противном случае C#(swith) скомпилируется в тот же самый IL(if).
Разница есть:
1) В читаемости кода
2) В скорости быстродействия
3) В уровне понимания принипов ООП и работы С# как в сущности, так и в частности
T>Или это у вас самое критичное место в коде?
Это не самое узкое место. Но всё-таки если оптимизировать везде по чуть-чуть, то в результате наберётся существенная разница!!!
T> Оптимизация алгоритмов иногда может дать убыстрение на -порядки-.
Это верно.
А существуют ли какие-то хитрости при компиляции кода из C# в IL? Ведь у компилятора я видел есть несколько уровней компиляции:
— убыстрение работы
— повышение качества, надёжности и стабильности работы кода
— уменьшение размера скомпилированного файлиа (.dll, .exe...)
За счёт чего достигается например убыстрение работы кода? А повышение качества?
... << RSDN@Home 1.1.4 @@subversion >>
Re[3]: Сравнение swtch.. case.... и if (условие 1) ... else
Здравствуйте, Paul Poloziouk, Вы писали:
PP>Это не самое узкое место. Но всё-таки если оптимизировать везде по чуть-чуть, то в результате наберётся существенная разница!!!
Неверно. Реальный эффект дает оптимизация очень малого количества кода.