Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / C++ Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3 4   вперед  Ctrl      все
 Re: Отправить задание c++ серверу  [new]
ptr128
Member

Откуда: Moscow
Сообщений: 887
Dimitry Sibiryakov,

Я еще не встречал компилятор, разворачивающий switch в таблицу и бинарный поиск, а не тупой последовательный перебор. Пример в студию (код, компилятор, опции запуска, ассемблерный файл).
2 янв 21, 07:40    [22258004]     Ответить | Цитировать Сообщить модератору
 Re: Отправить задание c++ серверу  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 52921

ptr128
Я еще не встречал компилятор, разворачивающий switch в таблицу и бинарный поиск,

Поищи, это недавно обсуждалось. Почти все они разворачивают switch в таблицу переходов.

Posted via ActualForum NNTP Server 1.5

2 янв 21, 13:08    [22258027]     Ответить | Цитировать Сообщить модератору
 Re: Отправить задание c++ серверу  [new]
Dima T
Member

Откуда:
Сообщений: 15689
ptr128
Dimitry Sibiryakov,

Я еще не встречал компилятор, разворачивающий switch в таблицу и бинарный поиск, а не тупой последовательный перебор. Пример в студию (код, компилятор, опции запуска, ассемблерный файл).

17647333
2 янв 21, 13:20    [22258030]     Ответить | Цитировать Сообщить модератору
 Re: Отправить задание c++ серверу  [new]
ptr128
Member

Откуда: Moscow
Сообщений: 887
Dimitry Sibiryakov

ptr128
таблицу и бинарный поиск,

таблицу переходов.

Разницы не замечаете?
2 янв 21, 18:05    [22258067]     Ответить | Цитировать Сообщить модератору
 Re: Отправить задание c++ серверу  [new]
ptr128
Member

Откуда: Moscow
Сообщений: 887
Dima T,

Не вижу бинарного поиска в упор.
2 янв 21, 18:06    [22258068]     Ответить | Цитировать Сообщить модератору
 Re: Отправить задание c++ серверу  [new]
Dima T
Member

Откуда:
Сообщений: 15689
ptr128
Dima T,

Не вижу бинарного поиска в упор.

Его там нет и не надо.

PS О чем спор? Топик лень читать, цитируйте качественнее.

Сообщение было отредактировано: 2 янв 21, 18:09
2 янв 21, 18:14    [22258071]     Ответить | Цитировать Сообщить модератору
 Re: Отправить задание c++ серверу  [new]
ptr128
Member

Откуда: Moscow
Сообщений: 887
Dima T
ptr128
Dimitry Sibiryakov,

Я еще не встречал компилятор, разворачивающий switch в таблицу и бинарный поиск, а не тупой последовательный перебор. Пример в студию (код, компилятор, опции запуска, ассемблерный файл).

17647333

В Вашем примере бинарного поиска не вижу в упор.

P.S. Читать надо сообщение, на которое отвечаете )))
2 янв 21, 18:24    [22258073]     Ответить | Цитировать Сообщить модератору
 Re: Отправить задание c++ серверу  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 52921

ptr128
В Вашем примере бинарного поиска не вижу в упор.

А ты настаиваешь, что O(1) надо таки заменить на O(log2(N))?..

Posted via ActualForum NNTP Server 1.5

2 янв 21, 18:47    [22258081]     Ответить | Цитировать Сообщить модератору
 Re: Отправить задание c++ серверу  [new]
ptr128
Member

Откуда: Moscow
Сообщений: 887
Dimitry Sibiryakov,
я настаиваю, что, например, при реализации приема команд на AVR по протоколу NEC (8 бит на устройство и 8 бит на команду), перебирать несколько сот кодов последовательно - недопустимая роскошь. Например, восемь устройств по 32 команды. Для 8-битного процессора разница между между 128 и 9 (на порядок!) обращениям к таблице во флеш памяти - грандиозная.

Просто у Вас убогий и совершенно не имеющий практического применения пример. Я же привел пример и собственного опыта. Естественно, редко когда коды команд закодированы последовательно. И тем более нумерация устройств )))

Сообщение было отредактировано: 2 янв 21, 19:14
2 янв 21, 19:17    [22258090]     Ответить | Цитировать Сообщить модератору
 Re: Отправить задание c++ серверу  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 52921

ptr128
Для 8-битного процессора разница между между 128 и 9 (на порядок!) обращениям к таблице во
флеш памяти - грандиозная.

А что, кто-то запрещает if-ы организовать в дерево, а не цепочку?..

Posted via ActualForum NNTP Server 1.5

2 янв 21, 19:27    [22258091]     Ответить | Цитировать Сообщить модератору
 Re: Отправить задание c++ серверу  [new]
ptr128
Member

Откуда: Moscow
Сообщений: 887
Dimitry Sibiryakov,

никто ничего не запрещает, но код двоичного поиска на порядок меньше занимает места во флеше и на порядок быстрее )))
Когда у Вас 32 килобайта флеша это может влиять вообще на возможность реализации требуемой функциональности на данном МК.
Разбаловались гигабайтами и гигагерцами? )))

Я уже молчу о случае, когда у Вас Padаuk типа PFS154 всего с двумя килословами на борту и 128 байтами оперативки )))

Сообщение было отредактировано: 2 янв 21, 19:38
2 янв 21, 19:34    [22258092]     Ответить | Цитировать Сообщить модератору
 Re: Отправить задание c++ серверу  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 52921

Какое отношение всё это имеет к топикстартеру?

Posted via ActualForum NNTP Server 1.5

2 янв 21, 20:05    [22258094]     Ответить | Цитировать Сообщить модератору
 Re: Отправить задание c++ серверу  [new]
tip78
Member

Откуда: Москва
Сообщений: 1266
ъъъъъ
ptr128
пропущено...

А табличный метод отменили уже что-ли?

Делаем табличку в памяти (массив структур) состоящую из отсортированных идентификаторов запроса и указателя на функцию, этот запрос обрабатывающую. Тупым бинарным поиском ищем принятый идентификатор в таблице. Если не найден - ошибка. Если найден - вызываем функцию, обрабатывающий запрос с таким идентификатором передавая ей все остальные параметры запроса.

Делаем табличку в памяти, состояющую из указателей на реализации методов.
В запросе передаем индекс метода, вместо его имени.
Сервер обращается к методу по индексу. Далее метод выполняет специфичный для него код (например, выбирает из тела запроса значения входных параметров метода и т.п.).

зачем так всё усложнять то?
в простейшем случае (вот как этот) во входящем запросе будет только цифра (код) команды
а это обычный вектор.
про http-роутинг речи же не идёт
2 янв 21, 20:19    [22258097]     Ответить | Цитировать Сообщить модератору
 Re: Отправить задание c++ серверу  [new]
ptr128
Member

Откуда: Moscow
Сообщений: 887
Dimitry Sibiryakov,

прямое.

Во-первых, в приведенном мной примере и был сделан аналогичный сервер на AVR. Не вижу принципиальной разницы в том, что у меня коммуникация по SPI.
Во-вторых, даже на гигабайтах и гигагерцах, при яро пропагандируемом Вами подходе, и получаются монстры требующие по 2ГБ свободной оперативки только для запуска и поедающие до 50% ресурсов многоядерных CPU.

Надеяться на оптимизацию компилятором можно только в том случае, когда точно знаешь ее возможности и ограничения, а так же давно привык анализировать ее результат по ассемблерному листингу. В противном случае, рекомендуется включать голову и использовать оптимизированные алгоритмы, которые преподают сейчас даже в школе на уроках информатики )))
2 янв 21, 20:19    [22258098]     Ответить | Цитировать Сообщить модератору
 Re: Отправить задание c++ серверу  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 52921

ptr128
Не вижу принципиальной разницы в том, что у меня коммуникация по SPI.

Дело не в технологиях, а в том, что ТС - чайник, для которого простота и понятность кода
важнее его эффективности. Поэтому преждевременную оптимизацию - отставить!

Posted via ActualForum NNTP Server 1.5

2 янв 21, 20:22    [22258099]     Ответить | Цитировать Сообщить модератору
 Re: Отправить задание c++ серверу  [new]
tip78
Member

Откуда: Москва
Сообщений: 1266
ptr128
Во-вторых, даже на гигабайтах и гигагерцах, при яро пропагандируемом Вами подходе, и получаются монстры требующие по 2ГБ свободной оперативки только для запуска и поедающие до 50% ресурсов многоядерных CPU.

если сделать на if-ах, то будет 2гб и 50% ?
2 янв 21, 20:48    [22258101]     Ответить | Цитировать Сообщить модератору
 Re: Отправить задание c++ серверу  [new]
ptr128
Member

Откуда: Moscow
Сообщений: 887
Dimitry Sibiryakov,

если чайника-бетонщика учить так, чтобы ему было проще и понятно, то тогда не надо ему штыковать и обрабатывать вибратором бетон при заливке фундамента? Просто залить его на порядок больше, чтобы скомпенсировать отсутствие "оптимизации" объемом? Сами в доме на таком фундаменте захотели бы жить? А программиста так обучать не то что можно, а по Вашим словам - НУЖНО! )))

Что интересно - не от Вас одного слышу такой подход. То есть строителей, врачей, слесарей, сварщиков, автомехаников - так учить недопустимо. Потому что там без "оптимизации" дом рухнет, больной успеет умереть, кран протечет, газопровод прорвет, водитель в ДТП убьется. А программистов - нужно. Комп все стерпит )))

Помнится, именно из-за проблем с отсутствием оптимизации кода пришлось отменить несколько сотен рейсов из аэропорта Хитроу, хотя на тестировании система успешно справлялась с задачей. Но упала под реальной нагрузкой.
2 янв 21, 20:52    [22258102]     Ответить | Цитировать Сообщить модератору
 Re: Отправить задание c++ серверу  [new]
ptr128
Member

Откуда: Moscow
Сообщений: 887
tip78
если сделать на if-ах, то будет 2гб и 50% ?

Да, если нет никаких следов алгоритмической оптимизации в тысячах методах конкретного программного продукта.

P.S. Вроде бы сайт называется sql.ru. То бишь, люди здесь должны понимать, что подобный код в какой-то CLR может вызываться миллиард раз на одном сервере в одном SQL запросе. Но все равно в лом оптимизировать алгоритм (((

Сообщение было отредактировано: 2 янв 21, 20:52
2 янв 21, 20:54    [22258103]     Ответить | Цитировать Сообщить модератору
 Re: Отправить задание c++ серверу  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 7650
ptr128,

Объем не поможет. Он не работает на растяжение и сжатие. Армирование работает.
И рассчитывает монолит инженер, а рабочий выполняет инструкции.
Так и прогеры. Они давно разделились.
Оптимизация не всегда нужна.
2 янв 21, 21:48    [22258107]     Ответить | Цитировать Сообщить модератору
 Re: Отправить задание c++ серверу  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 7650
ptr128,
На sql берут целиком http server. Он уже оптимизирован и протестирован.
doGet() {
      Строка урл = httpserver.дайПараметрыИзУрл();
         ....
       httpserver.отправитьОтвет(http.OK);
}
2 янв 21, 21:53    [22258109]     Ответить | Цитировать Сообщить модератору
 Re: Отправить задание c++ серверу  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 7650
...

Сообщение было отредактировано: 2 янв 21, 21:49
2 янв 21, 21:54    [22258110]     Ответить | Цитировать Сообщить модератору
 Re: Отправить задание c++ серверу  [new]
ptr128
Member

Откуда: Moscow
Сообщений: 887
PetroNotC Sharp,

про бетон я в курсе. Оттуда и смайлики, и вопрос о желании жить в таком доме.
И то что оптимизация не всегда нужна тоже в курсе.

Лично меня жизнь болезненными пинками научила оптимизировать код. Сын учится в Бауманке и там студентов заставляют считать, насколько их код оптимален. И от этой оптимальности может зависеть оценка. Что, по моему, правильно. Потому что лучше при обучении заставлять писать оптимально всегда, даже если это не существенно, чем когда слышишь от молодого специалиста: "И так нормально! Я проверял, запрос за секунды выполняется."
И задолбаешся вбивать этому специалисту в голову, что он за секунды выполняется в среде разработки, а на продуктиве через год это может вылиться в десятки минут, негатив от заказчика и ударную оптимизацию в новогодние праздники в честь закрытия года (было и такое).
2 янв 21, 22:02    [22258112]     Ответить | Цитировать Сообщить модератору
 Re: Отправить задание c++ серверу  [new]
ptr128
Member

Откуда: Moscow
Сообщений: 887
PetroNotC Sharp
ptr128,
На sql берут целиком http server.

Ой, спасибо. Промышленный заказчик бы и цента не заплатил, если бы Вы предложили бы ему данные через http гонять по RS-485 )))
2 янв 21, 22:12    [22258114]     Ответить | Цитировать Сообщить модератору
 Re: Отправить задание c++ серверу  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 7650
ptr128,
Странный вы.
Время отклика пишется в ТЗ.
Если заказчика устраивает цифра 100-400 мс, то вполне.
А на sql.ru сколько? Или вы интернетом не пользуетесь?)))
))))
2 янв 21, 22:18    [22258115]     Ответить | Цитировать Сообщить модератору
 Re: Отправить задание c++ серверу  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 7650
ptr128,

И что такое слово "промышленный" заказчик?
Это в литейном цеху?
2 янв 21, 22:19    [22258116]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3 4   вперед  Ctrl      все
Все форумы / C++ Ответить