Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [C++] максимально оптимальное кол. case в switch, не теряя производительности 
V
    Опции темы
kemiisto
Дата 23.3.2011, 01:00 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 2
Всего: 160



Во-первых, зависит от реализации. Значит в общем случае неверно.
Во-вторых, я в упор не вижу пруфов с исходниками GCC, например, с этими вашими таблицами переходов. Вы проверяли? Или так. Кто-то где-то написал... Болтовню вижу, пруфо - нет.
В-третьих, бенчмарков я тоже не увидел. Для закрытых реализаций полагаться больше не на что.
В-четвёртых, я не понял насчёт 64 if'ов. Да, я в курсе, что С++ - язык калека и что даже "честного" многоветочного if там нет. Но неужели ваш хвалёный оптимизатор неспособен распознать такую ситуацию? Вы уверены? Исходники смотрели? Тесты?

Пока пруфы не запилите, я буду считать вас пустословами. smile 


--------------------
PM MAIL WWW GTalk Jabber   Вверх
volatile
Дата 23.3.2011, 01:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 37
Всего: 85



Цитата(kemiisto @  23.3.2011,  01:00 Найти цитируемый пост)
Да, я в курсе, что С++ - язык калека 


kemiisto, я часто слышу от вас такие слова. А какой язык вы считаете достойным почитания? просто интересно.


PM MAIL   Вверх
volatile
Дата 23.3.2011, 01:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 37
Всего: 85



Цитата(kemiisto @  23.3.2011,  01:00 Найти цитируемый пост)
Пока пруфы не запилите


Ну просто Первое, что попалось на глаза
Уже даже при 5 кейсах свитч обгоняет ифы.
Впрочем, дальше искать не стал, так как я ничего никому доказывать не собираюсь.
Если вам действительно интересно, все сможете найти.

PM MAIL   Вверх
mes
Дата 23.3.2011, 01:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(volatile @  23.3.2011,  00:28 Найти цитируемый пост)
 А какой язык вы считаете достойным почитания? просто интересно.

если вкусы не изменились, то Оберон.


--------------------
PM MAIL WWW   Вверх
kemiisto
Дата 23.3.2011, 01:58 (ссылка)   | (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 2
Всего: 160



Цитата(volatile @  22.3.2011,  23:28 Найти цитируемый пост)
А какой язык вы считаете достойным почитания?

Почитания - никакой. 

Цитата(volatile @  22.3.2011,  23:28 Найти цитируемый пост)
kemiisto, я часто слышу от вас такие слова. 

Ты мало бываешь в Интернетах. Эти слова уже лет 20 как повсюду. smile Я вообще иногда не уверен, что появилось раньше - С++ или негативное к нему отношение. smile Но ни каждому дано увидеть и услышать. Я уж молчу про сравнить, понять, сделать выводы...

Цитата(volatile @  22.3.2011,  23:47 Найти цитируемый пост)
Ну просто Первое, что попалось на глаза

1) Это результаты на конкретной реализации. Не указано какой.
2) Нет ключей компилятора (настроек проекта).
3) Of course, this wouldn’t even be noticeable in most applications.
4) [...] timings may vary quite a bit [...]

Цитата(volatile @  22.3.2011,  23:47 Найти цитируемый пост)
Впрочем, дальше искать не стал, так как я ничего никому доказывать не собираюсь.

Запомни, как писать эту фразу правильно в Интернетах: "Я сливаю базар." smile 


--------------------
PM MAIL WWW GTalk Jabber   Вверх
alexvs11
Дата 23.3.2011, 02:11 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


hell is here
**


Профиль
Группа: Участник
Сообщений: 518
Регистрация: 21.8.2010

Репутация: 6
Всего: 10



Цитата(kemiisto @  23.3.2011,  01:58 Найти цитируемый пост)
Запомни, как писать эту фразу правильно в Интернетах: "Я сливаю базар."

а что нужно доказывать? тут ктото диссертацию пишет? ТС видимо ожидал ответа нечто вроде "при 20ти" smile 

PM MAIL   Вверх
volatile
Дата 23.3.2011, 02:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 37
Всего: 85



Цитата(kemiisto @  23.3.2011,  01:58 Найти цитируемый пост)
Эти слова уже лет 20 как повсюду

Ну недолго ему (C++) осталось. Еще лет 20 и все перейдут на оберон.

PM MAIL   Вверх
borisbn
Дата 23.3.2011, 09:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 22
Всего: 135



Цитата(kemiisto @  23.3.2011,  01:00 Найти цитируемый пост)
Во-вторых, я в упор не вижу пруфов с исходниками GCC, например, с этими вашими таблицами переходов. Вы проверяли?

http://forum.vingrad.ru/index.php?showtopi...t&p=2130619


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
kemiisto
Дата 23.3.2011, 10:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 2
Всего: 160



borisbn, ну вот уже что-то. Хорошо, показана эта самая таблица смещений, или как вы её там называете. Теперь надобно на рельном (из практики) конечном автомате показать, что будет:
  • Существенный значимый выигрышь в скорости; т.е. начинаем с 2x при времени выполнения алгоритма ~5-10 минут.
  • Этот участок кода будет лимитирующим для скорости выполнения программы в целом. ТС ведь не "КА в себе" пишет. Для начала стоит посмотреть, стоит ли игра свеч.

Цитата(volatile @  23.3.2011,  00:13 Найти цитируемый пост)
Ну недолго ему (C++) осталось. Еще лет 20 и все перейдут на оберон.

volatile, заметь, ты сейчас отвечал не мне. Т.к.
  • я ничего не говорил про Оберон;
  • я ничего не предсказывал про то, сколько и кому осталось.



--------------------
PM MAIL WWW GTalk Jabber   Вверх
mes
Дата 23.3.2011, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(kemiisto @  23.3.2011,  09:24 Найти цитируемый пост)
Теперь надобно на рельном (из практики) конечном автомате показать, что будет:
Существенный значимый выигрышь в скорости; т.е. начинаем с 2x при времени выполнения алгоритма ~5-10 минут.

 smile 
я ничего не путаю, вопрос тс ведь был :
Цитата

Как узнать, какое максимальное количество case'ов можно использовать в switch'е при этом не теряя эффективности switch'a/производительности? 

т.е. вопрос не о выйгрыше,а об отсутствии проигрыша.. 



--------------------
PM MAIL WWW   Вверх
kemiisto
Дата 23.3.2011, 12:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 2
Всего: 160



Цитата(mes @  23.3.2011,  09:41 Найти цитируемый пост)
я ничего не путаю

Путаешь. smile ТС ответ уже получил. Сейчас мв обсуждаем вот это:
Цитата(volatile @  21.3.2011,  23:39 Найти цитируемый пост)
Ну уж в любом случае быстрее кучи if'ов 



--------------------
PM MAIL WWW GTalk Jabber   Вверх
rudvil
Дата 23.3.2011, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 20.11.2009
Где: Latvia/Riga

Репутация: 2
Всего: 3



Цитата(mes)
т.е. вопрос не о выйгрыше,а об отсутствии проигрыша..
  smile 
Но т.к. 
Цитата(volatile)
Ну уж в любом случае быстрее кучи if'ов
 мне ничего не остается как, использовать switch.
Не заморачиваться же с goto  smile

Это сообщение отредактировал(а) rudvil - 23.3.2011, 12:49
--------------------
xor
PM MAIL Skype   Вверх
bsa
Дата 23.3.2011, 12:54 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Цитата(rudvil @  23.3.2011,  12:37 Найти цитируемый пост)
Не заморачиваться же с goto

причем тут goto? все операторы ветвлений (условий и циклов) реализуются через (условные) переходы. Поэтому самостоятельно связываться с goto смысла в 99,99% случаев нет никакого.
PM   Вверх
mes
Дата 23.3.2011, 13:36 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(kemiisto @  23.3.2011,  11:02 Найти цитируемый пост)
Ну уж в любом случае быстрее кучи if'ов

мне показалось, что имелись ввиду не оптимизированные условия.. 
т.е. что свитч сделает не медленее, но вероятно и быстрей.. 
подразумевается случай если программист не будет тратить свое время на "вылизывание" ифов для конкретной узкой задачи под конкретную платформу..





--------------------
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0671 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.