Разработка, производство и продажа радиоэлектронной аппаратуры
|
Карта сайта
|
Пишите нам
|
В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:
jobsmp@pochta.ru
Телесистемы
|
Электроника
|
Конференция «Микроконтроллеры и их применение»
Кто быстрее, swich или пачка if-ов?
Отправлено
Харизмат
23 октября 2009, г. 18:07
Составить ответ
|
Вернуться на конференцию.
Ответы
почти всегда быстрее if-else-if. в студенчестве на мат.моделировании многоэтажные интегродифуры решал - проверял фортран, паскаль и си.(PDP-11) хитеховский для пиков тож ifelse быстрее пашет..
-
LordN
(23.10.2009, 21:31:29
82.200.122.171
,
пустое
)
На ИАРе, видя, какие он чудеса творит при полной оптимизации, будет одинаково. Кстати, что мешает проверить, а не устраивать дискуссии а-ля Дохтур. Иди это и есть Дохтур?
-
Vladimir Ljaschko
(23.10.2009, 19:43:43
93.84.127.20
,
пустое
)
А на генерируемый листинг религия запрещает глядеть ?
-
fanta
(23.10.2009, 19:41:20
91.77.160.100
, 33 байт)
Желательно описывать задачу наиболее естественным образом. 1 переход - if, несколько - switch, много - таблица переходов (указатели). Разница if/switch будет зависть только от корявости компилятора и ядра. Корявый компилятор может для каждого if грузить переменную из ОЗУ.
-
Юрий_СВ
(23.10.2009, 19:00:18
91.214.248.66
,
пустое
)
мораль: писать надо на асме :)
-
nestandart
(23.10.2009, 19:01:14
79.235.134.238
,
пустое
)
ASM-извращение! Сразу-В КОДАХ! ;)
-
Макаров
(23.10.2009, 19:46:59
95.107.78.121
,
пустое
)
Зависит от диапазона значений case-ов и от компилятора. У IAR можно явно задать диапазон case-ов. Некоторые компиляторы даже способны сразу генерить таблицу переходов, вместо последовательных сравнений.
-
rezident
(23.10.2009, 18:14:57
212.33.249.11
,
пустое
)
диапахон 1,2,3,4,5 :)
-
Харизмат
(23.10.2009, 18:15:54
10.10.95.35,194.29.61.86
,
пустое
)
Для пяти значений последовательности чисел я бы if-ами все сделал. Причем количество сравнений было бы не более 3-х ;)
-
rezident
(23.10.2009, 18:18:43
212.33.249.11
,
пустое
)
К тому же в Си (ANSI C и C99) у switch по сравнениюс if есть один существенный недостаток. Аргумент case может быть только константа. И таких case-ов в одглм switch может быть не более 1023.
-
rezident
(23.10.2009, 18:23:30
212.33.249.11
,
пустое
)
а ну да вкурил. Можно и двумя обойтись.. вопрос что быстрее, перескочить с ифа на иф или посчит...{+}
-
Харизмат
(23.10.2009, 18:23:13
10.10.95.35,194.29.61.86
, 214 байт)
Да, верно. Для пяти чисел достаточно двух сравнений. Это для диапазонов значений, задаваемых пятью числами, не более 3-х.
-
rezident
(23.10.2009, 18:31:31
212.33.249.11
,
пустое
)
О_о
-
Харизмат
(23.10.2009, 18:21:7
10.10.95.35,194.29.61.86
, 99 байт)
смотря сколько вариантов, если много то switch
-
Атмег
(23.10.2009, 18:14:34
192.168.33.126,78.37.73.10
,
пустое
)
мало. Значит одинаково..?
-
Харизмат
(23.10.2009, 18:16:29
10.10.95.35,194.29.61.86
,
пустое
)
На МСП430 (IAR) if - оказались быстрее. Если честно - сам охренел. Чё там накомпилировалось - не смотрел.
-
Trashy
(23.10.2009, 18:13:11
192.168.2.45,213.167.60.22
,
пустое
)
а сколько веток было?
-
Атмег
(23.10.2009, 18:15:33
192.168.33.126,78.37.73.10
,
пустое
)
Не помню. Я сначала, для проверки ифами состряпал, а потом начал вылизывать и что б красиво стало, на свичи всё заменил. Прога перестало адекватно реагировать. А ифы были расположены в последовательности от максимально вероятного к минимально венроятному.
-
Trashy
(23.10.2009, 19:02:5
192.168.2.45,213.167.60.22
,
пустое
)
чо, Третьяковка хотела исходник купить? Вылизант... )
-
basilmak
(23.10.2009, 22:01:15
89.191.241.237
,
пустое
)
В Индию железяка уехала.
-
Trashy
(23.10.2009, 22:05:48
83.167.100.72
,
пустое
)
гы, типа в наше время военпреды требовали чтобы в изделии не больше 17% фрезерованых деталей - а щаз требуют чтоб не более 17 операторов "GoTo"))))
-
basilmak
(23.10.2009, 22:37:10
89.191.241.237
,
пустое
)
5 или 7
-
Харизмат
(23.10.2009, 18:21:37
10.10.95.35,194.29.61.86
,
пустое
)
я тоже иарю на M16
-
Харизмат
(23.10.2009, 18:14:57
10.10.95.35,194.29.61.86
,
пустое
)
Ружо такое американское?
-
Крок
(23.10.2009, 19:16:37
62.118.59.14
,
пустое
)
М16 - это болт, который кладётся на программирование
-
Шунт_гороховый
(23.10.2009, 19:42:14
89.178.84.100
,
пустое
)
стыдоба.. swiTch =)
-
Харизмат
(23.10.2009, 18:09:38
10.10.95.35,194.29.61.86
,
пустое
)
Быстрее asm
-
Шунт_гороховый
(23.10.2009, 18:09:13
89.178.84.100
,
пустое
)
спасибо, а ответ на мой вопрос ?
-
Харизмат
(23.10.2009, 18:10:20
10.10.95.35,194.29.61.86
,
пустое
)
Зависит от компилятора. В хелпе к дельфям читал, что case (паскалевский аналог switch) умеет, когда это выгодно, строить таблицу адресов переходов вместо цепочки сравнений. А если и делает цепочку сравнений, делает это "дихотомично"
-
Шунт_гороховый
(23.10.2009, 18:28:41
89.178.84.100
,
пустое
)
Отправка ответа
Имя*:
Пароль:
E-mail:
Тема*:
Сообщение:
Ссылка на URL:
URL изображения:
если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 12:
Перейти к списку ответов
|
Конференция
|
Раздел "Электроника"
|
Главная страница
|
Карта сайта
Web
telesys.ru