Сравнение swtch.. case.... и if (условие 1) ... else if (усл
От: Paul Poloziouk  
Дата: 24.11.04 08:29
Оценка:
Здравствуйте!

А что будет быстрее?

Конструкция
switch(объект)
{
case значение1:
break;
case значение2:
break;
...
case значениеn:
break;
}

либо

if (объект == значение 1)
{}
else if (объект == значение 2)
{}
else if (объект == значение 3)
{}
... << RSDN@Home 1.1.4 @@subversion >>
Сравнение swtch.. case.... и if (условие 1) ... else if (усл
От: Аноним  
Дата: 24.11.04 08:54
Оценка: 2 (1) -2
Обе одинаковы.
Потери в производительности могут быть у второго варианта, но не из-за его синтаксиса или компиляции, а того, что в качестве значения1 может быть не константа, а скажем _remoteObject.CallToVeryLongExecutingProc(myBigDatasetAsParameter). А сами перескоки с варианта на вариант в обоих случаях практически идентичны и на современных машинах за такое вообще не парятся (да и на двушке в TurboPascal никако существенной разницы между case N of ;; и if then else if ... разницы ощутимой не было). Как удобно, так и пишите.


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re: Сравнение swtch.. case.... и if (условие 1) ... else if
От: dVsevolod Россия  
Дата: 24.11.04 09:23
Оценка: 2 (1) +1 -2
Здравствуйте, Paul Poloziouk, Вы писали:

Конечно, в данном случае быстрее будет case, в случае с IF многократно производиться проверка условия, а в CASE она тоже происходит, но оптимизируется при компиляции.
Тем более с if-ми код становиться не читабильным!
Сравнение swtch.. case.... и if (условие 1) ... else if (усл
От: Аноним  
Дата: 24.11.04 09:38
Оценка: 2 (1)
Да о скорости здесь не стоит говорит, но switch, case по синтаксису мне больше нравиться.


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re: Сравнение swtch.. case.... и if (условие 1) ... else if
От: squiz  
Дата: 24.11.04 12:44
Оценка: 3 (2)
Здравствуйте, Fagim, Вы писали:

F>Обе одинаковы.


Ага, только вот если if будет вариантов на 100, вот тогда сравните!
ИМХО и не только, если 3 варианта — еще можно if, а больше — только свитч, потому как это прямой переход (типа хеша). Разница была и есть. Но в разных условиях — разная, например если такие конструкции выполняются раз-два за время замера времени работы, то можно эту самую разницу и не почувствовать, а если в цикле раз 100... да вариантов побольше...
А вообще, смотрите скомпиленый код — сразу все ясно.
Never underestimate those behind you...
Re: Сравнение swtch.. case.... и if (условие 1) ... else if
От: seregaa Ниоткуда http://blogtani.ru
Дата: 24.11.04 14:57
Оценка: 2 (1)
Здравствуйте, Paul Poloziouk, Вы писали:

PP>А что будет быстрее?


PP>switch(объект)

PP>...

PP>if (объект == значение 1)

PP>...

Ну во первых и то и другое будет компилиться в IL код, в котором switch не совсем соответствует switch C#-а. При соблюдении некоторых условий C#(swith) скомпилится в IL(swith), и в этом случае будет выигрыш в производительности. Ну а в противном случае C#(swith) скомпилируется в тот же самый IL(if).
Мобильная версия сайта RSDN — http://rsdn.org/forum/rsdn/6938747
Автор: sergeya
Дата: 19.10.17
Сравнение swtch.. case.... и if (условие 1) ... else if (усл
От: Аноним  
Дата: 24.11.04 17:23
Оценка: 3 (1)
Бурно обсуждалось тут.
________________________________
Best regards, Oleg Ufaev
Rostov .Net User Group


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re: Сравнение swtch.. case.... и if (условие 1) ... else if
От: Twirl Швеция  
Дата: 24.11.04 17:34
Оценка:
А есть разница? Или это у вас самое критичное место в коде? Оптимизация алгоритмов иногда может дать убыстрение на -порядки-.
Re[2]: Сравнение swtch.. case.... и if (условие 1) ... else
От: Paul Poloziouk  
Дата: 25.11.04 12:09
Оценка:
Здравствуйте, Twirl, Вы писали:

T>А есть разница?


Разница есть:
1) В читаемости кода
2) В скорости быстродействия
3) В уровне понимания принипов ООП и работы С# как в сущности, так и в частности

T>Или это у вас самое критичное место в коде?


Это не самое узкое место. Но всё-таки если оптимизировать везде по чуть-чуть, то в результате наберётся существенная разница!!!

T> Оптимизация алгоритмов иногда может дать убыстрение на -порядки-.


Это верно.
А существуют ли какие-то хитрости при компиляции кода из C# в IL? Ведь у компилятора я видел есть несколько уровней компиляции:
— убыстрение работы
— повышение качества, надёжности и стабильности работы кода
— уменьшение размера скомпилированного файлиа (.dll, .exe...)

За счёт чего достигается например убыстрение работы кода? А повышение качества?
... << RSDN@Home 1.1.4 @@subversion >>
Re[3]: Сравнение swtch.. case.... и if (условие 1) ... else
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 26.11.04 22:15
Оценка:
Здравствуйте, Paul Poloziouk, Вы писали:

PP>Это не самое узкое место. Но всё-таки если оптимизировать везде по чуть-чуть, то в результате наберётся существенная разница!!!


Неверно. Реальный эффект дает оптимизация очень малого количества кода.
... << RSDN@Home 1.1.4 beta 3 rev. 236>>
AVK Blog
Re: Сравнение swtch.. case.... и if (условие 1) ... else if
От: EM Великобритания  
Дата: 27.11.04 18:18
Оценка: 12 (1)
Здравствуйте, Paul Poloziouk, Вы писали:

PP>Здравствуйте!


PP>А что будет быстрее?



Эта тема неоднократно обсуждалась. Например, здесь
Автор: VladD2
Дата: 22.08.03
Влад клал ее в гроб
Опыт — это такая вещь, которая появляется сразу после того, как была нужна...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.