powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Аналог switch, но более эффективный
25 сообщений из 115, страница 2 из 5
Аналог switch, но более эффективный
    #38960264
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorychХотя... если платят за строчку кода, то подход со свичами - самый подходящий
А знаешь почему у Маяковского стихи в печатном виде выглядят так:

"Вот и вечер
в ночную жуть
ушел от окон,
хмурый,
декабрый.

В дряхлую спину хохочут и ржут
канделябры.
...
...
"
...
Рейтинг: 0 / 0
Аналог switch, но более эффективный
    #38960266
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир2012PS: Ну что Dima может проверишь?
Чего проверишь? Компилятор написать

Я тебе написал как на мой вгляд можно откомпилировать switch() в бинарное дерево. Компиляторы пишут дядьки поумнее меня, может там еще какие оптимизации посеръезнее используются.
...
Рейтинг: 0 / 0
Аналог switch, но более эффективный
    #38960276
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TЯ тебе написал как на мой вгляд можно откомпилировать switch() в бинарное дерево. Компиляторы пишут дядьки поумнее меня, может там еще какие оптимизации посеръезнее используются.
Ни кто и не говорит, что нужно разбираться с премудростями компилятора.
Пиши одну функцию, которые в цикле крутит switch с 50 case,
а другая использует area и переход с помощью goto ...
Если разницы во времени выполнения не будет ни какой, то и обсуждать нечего.
Также не плохо бы получить время и при использовании шаблонов Стратегия и Состояние ...
...
Рейтинг: 0 / 0
Аналог switch, но более эффективный
    #38960279
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты придумал - ты и пиши. Мне оно зачем?
...
Рейтинг: 0 / 0
Аналог switch, но более эффективный
    #38960283
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorychшаблоны проектирования Стратегия и Состояние отлично умеют заменять все эти switch одной красивой строчкой кода.
Кстати при предложенном мной подходе будет также использована одна строка в программе ...
...
Рейтинг: 0 / 0
Аналог switch, но более эффективный
    #38960284
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир2012Ни кто и не говорит, что нужно разбираться с премудростями компилятора.

Запустить g++ -S - совсем никакая премудрость.

Вот код:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
switch(i)
{
case 1: i = 1; break;
case 2: i = 1; break;
case 3: i = 1; break;
case 4: i = 1; break;
case 5: i = 1; break;
case 6: i = 1; break;
case 7: i = 1; break;
case 8: i = 1; break;
case 9: i = 1; break;
case 10: i = 1; break;
case 11: i = 1; break;
}


Вот результат в ассемблере:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
	movl	28(%rbp), %eax
	cmpl	$11, %eax
	ja	.L2
	movl	%eax, %eax
	leaq	0(,%rax,4), %rdx
	leaq	.L14(%rip), %rax
	movl	(%rdx,%rax), %eax
	movslq	%eax, %rdx
	leaq	.L14(%rip), %rax
	addq	%rdx, %rax
	jmp	*%rax


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Аналог switch, но более эффективный
    #38960288
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovЗапустить g++ -S - совсем никакая премудрость.
С g++ не знаком.
Надеюсь приведенный тобой код является результатом оптимизации ...
...
Рейтинг: 0 / 0
Аналог switch, но более эффективный
    #38960289
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир2012 Ни кто и не говорит, что нужно разбираться с премудростями компилятора.
Пиши одну функцию, которые в цикле крутит switch с 50 case,
а другая использует area и переход с помощью goto ...
Для правильных замеров первую надо писать на Си, чтобы замерить как компилятор оптимизирует, а вторую на асме, т.к. хз во что такую конструкцию компилятор превратит.
...
Рейтинг: 0 / 0
Аналог switch, но более эффективный
    #38960291
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Tа вторую на асме, т.к. хз во что такую конструкцию компилятор превратит.
Зачем на асме?
Оно нам надо?
"Нам денег не надо - нам время подай" ...
...
Рейтинг: 0 / 0
Аналог switch, но более эффективный
    #38960297
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир2012Dima Tа вторую на асме, т.к. хз во что такую конструкцию компилятор превратит.
Зачем на асме?
Оно нам надо?
"Нам денег не надо - нам время подай" ...
Затем что асм это команды процессору в чистом виде. Если хочешь правильного сравнения эффективности работы компилятора с собственным "идеальным" решением, то надо свое на асме писать. Если что - я на асме писать не умею. Точнее баловался в студенчестве, но с тех пор очень много чего поменялось.
...
Рейтинг: 0 / 0
Аналог switch, но более эффективный
    #38960301
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TЕсли хочешь правильного сравнения эффективности работы компилятора с собственным "идеальным" решением, то надо свое на асме писать
Это для "идеального" решения, а для обыденного один тест с switch, а ниже тест с area и goto
/на обычном C/.
Не плохо бы замеры сделать и для C++ для сравнения с предложенными шаблонами ...
...
Рейтинг: 0 / 0
Аналог switch, но более эффективный
    #38960311
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Я волком бы
выгрыз
шаблоны все.
К шаблонам
почтения нету.
К любой
простоте в программе
катись
и будет ей радость.
От этого ...
"
...
Рейтинг: 0 / 0
Аналог switch, но более эффективный
    #38960322
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир2012С g++ не знаком.
Так пойди и познакомься. А до тех пор...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Аналог switch, но более эффективный
    #38960324
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир2012 Это для "идеального" решения, а для обыденного один тест с switch, а ниже тест с area и goto
/на обычном C/.
Работу предлагаешь? Предлагай оплату.

У меня своих бредовых нерешенных задач куча.
Например:
Код: plaintext
1.
select * from table.dbf where field like "%что-то%"


выполняется 50 сек по сетке 100 мбит (table.dbf весит 0,5 Гб)
Код: plaintext
1.
CopyFile("\\server\share\table.dbf", "local.dbf", FALSE);


выполняется 10 сек
Код: plaintext
1.
select * from local.dbf where field like "%что-то%"


выполняется 5 сек.

Задача: надо сделать так чтобы первый запрос работал не более 1 сек.
Есть мысли как сделать, надо тестить.
...
Рейтинг: 0 / 0
Аналог switch, но более эффективный
    #38960325
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovТак пойди и познакомься. А до тех пор..
Вполне возможно, что и приду к g++...
А пока проза жизни /указания моего начальника/ требует, чтобы настроил VM под CentOS и чтобы
можно было в ней ... ... ... ...
Вообщем то по молодости лет 7 занимался Linux /Alt Linux, Debian, Slackware/.
Так что наверное как раз и до g++ дело дойдет ... /поражаюсь твоей проницательности/
...
Рейтинг: 0 / 0
Аналог switch, но более эффективный
    #38960326
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TРаботу предлагаешь?
Забудь о моих словах как об страшном сне ...

PS: Сегодня пятница ...
...
Рейтинг: 0 / 0
Аналог switch, но более эффективный
    #38960329
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TЗадача: надо сделать так чтобы первый запрос работал не более 1 сек.
Dimitry Sibiryakov уже прочитал об твоих проблемах ...
...
Рейтинг: 0 / 0
Аналог switch, но более эффективный
    #38960332
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир2012Вполне возможно, что и приду к g++...
Кстати, ты не поверишь, но MSVC генерирует ассемберный код даже лучше чем GCC.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Аналог switch, но более эффективный
    #38960339
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Оба. Вдохните глубоко. Пятница... и скипетр власти жжёт мне руку.
...
Рейтинг: 0 / 0
Аналог switch, но более эффективный
    #38960346
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир2012Dima TЗадача: надо сделать так чтобы первый запрос работал не более 1 сек.
Dimitry Sibiryakov уже прочитал об твоих проблемах ...
Думаешь решать сразу бросился?

Если что - задача не решаема в той постановке как я ее описал. Но есть ньюансы, которыми можно воспользоваться.
...
Рейтинг: 0 / 0
Аналог switch, но более эффективный
    #38960352
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TДумаешь решать сразу бросился?
Надо тебе польстить немного, а то ты немного что-то на меня опечалился ...

PS: Вот вспомнил о том какой ты труд приложил для достижения поставленной цели ...
http://www.sql.ru/forum/1149455-1/generator-prostyh-chisel-do-10-9-za-5-sek
...
Рейтинг: 0 / 0
Аналог switch, но более эффективный
    #38960359
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TЗадача: надо сделать так чтобы первый запрос работал не более 1 сек.
Ну так вспомни об RPC, DCOM, Веб-сервисах, ... ...
...
Рейтинг: 0 / 0
Аналог switch, но более эффективный
    #38960430
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О чем вообще спор-то?
Как выше неоднократно было сказано, все компиляторы оптимизируют большие switch в таблицы переходов.
Программисту никогда не нужно это делать вручную.
Все. Тема закрыта.
...
Рейтинг: 0 / 0
Аналог switch, но более эффективный
    #38960435
m_Sla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Аналог switch, но более эффективный
    #38960454
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyКак выше неоднократно было сказано, все компиляторы оптимизируют большие switch в таблицы переходов
Да ну ...
Ну так обрати внимания на ссылку приведенную ниже твоего post ...
...
Рейтинг: 0 / 0
25 сообщений из 115, страница 2 из 5
Форумы / C++ [игнор отключен] [закрыт для гостей] / Аналог switch, но более эффективный
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]