Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / C++ |
![]() ![]() |
Топик располагается на нескольких страницах: ←Ctrl назад 1 [2] 3 4 вперед Ctrl→ все |
ptr128 Member Откуда: Moscow Сообщений: 887 |
Dimitry Sibiryakov, Я еще не встречал компилятор, разворачивающий switch в таблицу и бинарный поиск, а не тупой последовательный перебор. Пример в студию (код, компилятор, опции запуска, ассемблерный файл). |
2 янв 21, 07:40 [22258004] Ответить | Цитировать Сообщить модератору |
Dimitry Sibiryakov Member Откуда: Сообщений: 52921 |
Поищи, это недавно обсуждалось. Почти все они разворачивают switch в таблицу переходов. Posted via ActualForum NNTP Server 1.5 |
||
2 янв 21, 13:08 [22258027] Ответить | Цитировать Сообщить модератору |
Dima T Member Откуда: Сообщений: 15689 |
17647333 |
||||
2 янв 21, 13:20 [22258030] Ответить | Цитировать Сообщить модератору |
ptr128 Member Откуда: Moscow Сообщений: 887 |
Разницы не замечаете? |
||||||
2 янв 21, 18:05 [22258067] Ответить | Цитировать Сообщить модератору |
ptr128 Member Откуда: Moscow Сообщений: 887 |
Dima T, Не вижу бинарного поиска в упор. |
2 янв 21, 18:06 [22258068] Ответить | Цитировать Сообщить модератору |
Dima T Member Откуда: Сообщений: 15689 |
Его там нет и не надо. PS О чем спор? Топик лень читать, цитируйте качественнее. Сообщение было отредактировано: 2 янв 21, 18:09 |
||||
2 янв 21, 18:14 [22258071] Ответить | Цитировать Сообщить модератору |
ptr128 Member Откуда: Moscow Сообщений: 887 |
В Вашем примере бинарного поиска не вижу в упор. P.S. Читать надо сообщение, на которое отвечаете ))) |
||||||||
2 янв 21, 18:24 [22258073] Ответить | Цитировать Сообщить модератору |
Dimitry Sibiryakov Member Откуда: Сообщений: 52921 |
А ты настаиваешь, что O(1) надо таки заменить на O(log2(N))?.. Posted via ActualForum NNTP Server 1.5 |
||
2 янв 21, 18:47 [22258081] Ответить | Цитировать Сообщить модератору |
ptr128 Member Откуда: Moscow Сообщений: 887 |
Dimitry Sibiryakov, я настаиваю, что, например, при реализации приема команд на AVR по протоколу NEC (8 бит на устройство и 8 бит на команду), перебирать несколько сот кодов последовательно - недопустимая роскошь. Например, восемь устройств по 32 команды. Для 8-битного процессора разница между между 128 и 9 (на порядок!) обращениям к таблице во флеш памяти - грандиозная. Просто у Вас убогий и совершенно не имеющий практического применения пример. Я же привел пример и собственного опыта. Естественно, редко когда коды команд закодированы последовательно. И тем более нумерация устройств ))) Сообщение было отредактировано: 2 янв 21, 19:14 |
2 янв 21, 19:17 [22258090] Ответить | Цитировать Сообщить модератору |
Dimitry Sibiryakov Member Откуда: Сообщений: 52921 |
А что, кто-то запрещает if-ы организовать в дерево, а не цепочку?.. Posted via ActualForum NNTP Server 1.5 |
||
2 янв 21, 19:27 [22258091] Ответить | Цитировать Сообщить модератору |
ptr128 Member Откуда: Moscow Сообщений: 887 |
Dimitry Sibiryakov, никто ничего не запрещает, но код двоичного поиска на порядок меньше занимает места во флеше и на порядок быстрее ))) Когда у Вас 32 килобайта флеша это может влиять вообще на возможность реализации требуемой функциональности на данном МК. Разбаловались гигабайтами и гигагерцами? ))) Я уже молчу о случае, когда у Вас Padаuk типа PFS154 всего с двумя килословами на борту и 128 байтами оперативки ))) Сообщение было отредактировано: 2 янв 21, 19:38 |
2 янв 21, 19:34 [22258092] Ответить | Цитировать Сообщить модератору |
Dimitry Sibiryakov Member Откуда: Сообщений: 52921 |
Какое отношение всё это имеет к топикстартеру? Posted via ActualForum NNTP Server 1.5 |
2 янв 21, 20:05 [22258094] Ответить | Цитировать Сообщить модератору |
tip78 Member Откуда: Москва Сообщений: 1266 |
зачем так всё усложнять то? в простейшем случае (вот как этот) во входящем запросе будет только цифра (код) команды а это обычный вектор. про http-роутинг речи же не идёт |
||||||||
2 янв 21, 20:19 [22258097] Ответить | Цитировать Сообщить модератору |
ptr128 Member Откуда: Moscow Сообщений: 887 |
Dimitry Sibiryakov, прямое. Во-первых, в приведенном мной примере и был сделан аналогичный сервер на AVR. Не вижу принципиальной разницы в том, что у меня коммуникация по SPI. Во-вторых, даже на гигабайтах и гигагерцах, при яро пропагандируемом Вами подходе, и получаются монстры требующие по 2ГБ свободной оперативки только для запуска и поедающие до 50% ресурсов многоядерных CPU. Надеяться на оптимизацию компилятором можно только в том случае, когда точно знаешь ее возможности и ограничения, а так же давно привык анализировать ее результат по ассемблерному листингу. В противном случае, рекомендуется включать голову и использовать оптимизированные алгоритмы, которые преподают сейчас даже в школе на уроках информатики ))) |
2 янв 21, 20:19 [22258098] Ответить | Цитировать Сообщить модератору |
Dimitry Sibiryakov Member Откуда: Сообщений: 52921 |
Дело не в технологиях, а в том, что ТС - чайник, для которого простота и понятность кода важнее его эффективности. Поэтому преждевременную оптимизацию - отставить! Posted via ActualForum NNTP Server 1.5 |
||
2 янв 21, 20:22 [22258099] Ответить | Цитировать Сообщить модератору |
tip78 Member Откуда: Москва Сообщений: 1266 |
если сделать на if-ах, то будет 2гб и 50% ? |
||||
2 янв 21, 20:48 [22258101] Ответить | Цитировать Сообщить модератору |
ptr128 Member Откуда: Moscow Сообщений: 887 |
Dimitry Sibiryakov, если чайника-бетонщика учить так, чтобы ему было проще и понятно, то тогда не надо ему штыковать и обрабатывать вибратором бетон при заливке фундамента? Просто залить его на порядок больше, чтобы скомпенсировать отсутствие "оптимизации" объемом? Сами в доме на таком фундаменте захотели бы жить? А программиста так обучать не то что можно, а по Вашим словам - НУЖНО! ))) Что интересно - не от Вас одного слышу такой подход. То есть строителей, врачей, слесарей, сварщиков, автомехаников - так учить недопустимо. Потому что там без "оптимизации" дом рухнет, больной успеет умереть, кран протечет, газопровод прорвет, водитель в ДТП убьется. А программистов - нужно. Комп все стерпит ))) Помнится, именно из-за проблем с отсутствием оптимизации кода пришлось отменить несколько сотен рейсов из аэропорта Хитроу, хотя на тестировании система успешно справлялась с задачей. Но упала под реальной нагрузкой. |
2 янв 21, 20:52 [22258102] Ответить | Цитировать Сообщить модератору |
ptr128 Member Откуда: Moscow Сообщений: 887 |
Да, если нет никаких следов алгоритмической оптимизации в тысячах методах конкретного программного продукта. P.S. Вроде бы сайт называется sql.ru. То бишь, люди здесь должны понимать, что подобный код в какой-то CLR может вызываться миллиард раз на одном сервере в одном SQL запросе. Но все равно в лом оптимизировать алгоритм ((( Сообщение было отредактировано: 2 янв 21, 20:52 |
||||
2 янв 21, 20:54 [22258103] Ответить | Цитировать Сообщить модератору |
PetroNotC Sharp Member Откуда: Сообщений: 7650 |
ptr128, Объем не поможет. Он не работает на растяжение и сжатие. Армирование работает. И рассчитывает монолит инженер, а рабочий выполняет инструкции. Так и прогеры. Они давно разделились. Оптимизация не всегда нужна. |
2 янв 21, 21:48 [22258107] Ответить | Цитировать Сообщить модератору |
PetroNotC Sharp Member Откуда: Сообщений: 7650 |
ptr128, На sql берут целиком http server. Он уже оптимизирован и протестирован. doGet() { Строка урл = httpserver.дайПараметрыИзУрл(); .... httpserver.отправитьОтвет(http.OK); } |
2 янв 21, 21:53 [22258109] Ответить | Цитировать Сообщить модератору |
PetroNotC Sharp Member Откуда: Сообщений: 7650 |
...
Сообщение было отредактировано: 2 янв 21, 21:49 |
2 янв 21, 21:54 [22258110] Ответить | Цитировать Сообщить модератору |
ptr128 Member Откуда: Moscow Сообщений: 887 |
PetroNotC Sharp, про бетон я в курсе. Оттуда и смайлики, и вопрос о желании жить в таком доме. И то что оптимизация не всегда нужна тоже в курсе. Лично меня жизнь болезненными пинками научила оптимизировать код. Сын учится в Бауманке и там студентов заставляют считать, насколько их код оптимален. И от этой оптимальности может зависеть оценка. Что, по моему, правильно. Потому что лучше при обучении заставлять писать оптимально всегда, даже если это не существенно, чем когда слышишь от молодого специалиста: "И так нормально! Я проверял, запрос за секунды выполняется." И задолбаешся вбивать этому специалисту в голову, что он за секунды выполняется в среде разработки, а на продуктиве через год это может вылиться в десятки минут, негатив от заказчика и ударную оптимизацию в новогодние праздники в честь закрытия года (было и такое). |
2 янв 21, 22:02 [22258112] Ответить | Цитировать Сообщить модератору |
ptr128 Member Откуда: Moscow Сообщений: 887 |
Ой, спасибо. Промышленный заказчик бы и цента не заплатил, если бы Вы предложили бы ему данные через http гонять по RS-485 ))) |
||||
2 янв 21, 22:12 [22258114] Ответить | Цитировать Сообщить модератору |
PetroNotC Sharp Member Откуда: Сообщений: 7650 |
ptr128, Странный вы. Время отклика пишется в ТЗ. Если заказчика устраивает цифра 100-400 мс, то вполне. А на sql.ru сколько? Или вы интернетом не пользуетесь?))) )))) |
2 янв 21, 22:18 [22258115] Ответить | Цитировать Сообщить модератору |
PetroNotC Sharp Member Откуда: Сообщений: 7650 |
ptr128, И что такое слово "промышленный" заказчик? Это в литейном цеху? |
2 янв 21, 22:19 [22258116] Ответить | Цитировать Сообщить модератору |
Топик располагается на нескольких страницах: ←Ctrl назад 1 [2] 3 4 вперед Ctrl→ все |
Все форумы / C++ | ![]() |