LINUX.ORG.RU

libcurl vs Boost.Asio

 , ,


1

2

Приветствую

Надо из кода на плюсах слать PUSH на андройд через REST запросы POST на ихний https сервер.

Что быстрее будет из этих двух работать???

Курл конечно много проще, но это ж надо еще либу эту поддерживать отдельно в проекте, бууст почти как стд вроде как, хотя вопрос конечно больше в эффективности.

ЗЫ. количество посылок в секунду пока хз сколько )

★★★

Ответ на: комментарий от wolverin

не совсем конечно из коробки, речь про способ использования на примере

Т.е. вы сравниваете готовую реализацию HTTP-клиента с обработкой кучи HTTP-шных заморочек с необходимостью колхозить собственную реализацию «типа HTTP POST» поверх голого Boost.Asio?

Можно спросить: у вас какая роль на проекте? Что-то типа «ведущего программиста», т.е. человек, который «ведет проект» в плане технической части и несет за это ответственность?

eao197 ★★★★★
()
Ответ на: комментарий от eao197

ну речь не про готовое, а самое эффективное, т.к. есть ограничение по ресурсам

на проекте у меня роль разобраться в кривом работающем проекте и сделать прямо

wolverin ★★★
() автор топика
Ответ на: комментарий от wolverin

ну речь не про готовое, а самое эффективное, т.к. есть ограничение по ресурсам

Собственноручно проведенные замеры на вашем железе под вашей нагрузкой дадут вам гораздо более точные ответы. Ваш К.О.

на проекте у меня роль разобраться в кривом работающем проекте и сделать прямо

Решения принимаете вы? Ответственность за решение несете вы?

Или вы просто кому-то сверху отдаете собранную вами информацию и этот «кто-то сверху» затем дает вам указание вроде «берем libcurl и копаем пока золотой ключик не окажется у нас в руках»?

eao197 ★★★★★
()
Ответ на: комментарий от wolverin

количество посылок в секунду пока хз сколько

самое эффективное

🤦

даже интересоваться не буду, как ты оцениваешь эффективность предполагаемых вариантов при таких вводных…

aol ★★★★★
()
Ответ на: комментарий от eao197

может уже проводил кто и удастся сэкономить кучу времени ))

и решения принимаю, и реализовываю решения, и ответственность за них несу, пока все получается.

wolverin ★★★
() автор топика
Ответ на: комментарий от aol

есть проблема с задержками пушей, может конечно иногда и гугл сам по себе дает тормоза, но раз уж выпиливается максимально возможный объем функционала на PHP, то почему бы и эту вещь не сделать сразу правильно.

wolverin ★★★
() автор топика
Ответ на: комментарий от wolverin

почему бы и эту вещь не сделать сразу правильно

«правильно» здесь - это сначала подсчитать нагрузку, а потом уже пенять на скриптовый язык/отсутствие asio/(ваши культы по вкусу) и бросаться всё переписывать.

aol ★★★★★
()
Ответ на: комментарий от wolverin

и решения принимаю, и реализовываю решения, и ответственность за них несу

Тогда это то, что во времена моей молодости называлось «ведущий программист» от понятия «программист, который ведет проект» с акцентом на «ведет».

Так вот, позволю себе старчески побрюзжать: это что, какая-то разновидность «20-летних сеньоров» когда ведущий программист не может самостоятельно справиться с такой задачей, как выбор инструментов под проект (под очередную фазу проекта)?

Казалось бы: определи список требований, прошерсти то, что есть в C++ мире в наличии (плюс сюда же чисто Си-шные вещи, вроде того же libcurl), проверь соответствие инструментов требованиям, собери short-list, проведи замеры, оцени удобство использования (потенциальные неудобства или подозрительные места), сделай выбор. Это же часть профессиональных обязанностей, такая же, как и написание кода.

Вам же за это деньги платят. А вы по каждому такому моменту за помощью к незнакомым вам дядям бегаете. Афигеть.

Вдруг кто-то, вроде меня, ответит вам специально «бери Boost.Asio, он на 22.5% эффективнее libcurl». Вот просто чтобы вы затем потрахались сами.

Я бы еще понял, если бы вы задавали вопросы типа: подскажите какие в C++ есть HTTP клиенты с поддержкой TLS. Это нормально, если бы мне потребовалось найти инструмент для, условно, изменения размеров JPEG изображений (а я здесь ни бум-бум), то мне бы подсказали направление для дальнейшего поиска. Но сравнение и выбор я бы делал сам.

Но вот ваши вопросы они больше напоминают «а подскажите нахаляву, а…» Фу таким быть. Фу.

eao197 ★★★★★
()
Ответ на: комментарий от eao197

ну хз, я же не прошу за меня написать, только поделиться опытом

зы. и да я прошерстил, поэтому предварительно остановился на этих, но посмотрю и ваш вариант, хотя больше склоняюсь к бусту, т.к. не придется потом ничего нигде искать, а нужды в других REST запросах пока не наблюдаю.

wolverin ★★★
() автор топика
Последнее исправление: wolverin (всего исправлений: 1)
Ответ на: комментарий от wolverin

Это вот это вот формулировка просьбы поделиться опытом:

Надо из кода на плюсах слать PUSH на андройд через REST запросы POST на ихний https сервер.

Что быстрее будет из этих двух работать???

Курл конечно много проще, но это ж надо еще либу эту поддерживать отдельно в проекте, бууст почти как стд вроде как, хотя вопрос конечно больше в эффективности.

?!

Это звучит скорее как «помогите мне сделать выбор».

Просьба поделиться опытом должна была бы звучать как-то так:

Сравнивал ли кто-нибудь производительность выполнения клиентских HTTP POST запросов через TLS посредством libcurl и Boost.Asio? Что работает быстрее, что жрет меньше ресурсов по вашему опыту?

Хотя и при этом здесь остается такой простор для уточняющих вопросов (хотя бы синхронность/асинхронность, объемы данных и т.д.), что мама не горюй.

eao197 ★★★★★
()
Ответ на: комментарий от wolverin

зы. и да я прошерстил, поэтому предварительно остановился на этих, но посмотрю и ваш вариант, хотя больше склоняюсь к бусту, т.к. не придется потом ничего нигде искать, а нужды в других REST запросах пока не наблюдаю.

Вы прошерстили на нашли в Boost.Asio реализацию HTTP POST? А Boost.Beast не заметили?

Афигеть, как это вам удалось?

eao197 ★★★★★
()
Ответ на: комментарий от wolverin

приблизительно так ) https://habr.com/ru/companies/infopulse/articles/226557/

Июнь 2014-го года, н-да-с…

«Сужденья черпают из забытых газет Времен Очаковских и покоренья Крыма» (с)

Но даже там cpp-httplib упоминается.

eao197 ★★★★★
()
Ответ на: комментарий от wolverin

curl думаю что 500-600МБ съест оперативки,подключал ее к luajit и сильно удивился. не стал разбираться почему так

я бы поискал пример реализации похожий вот на такой
http://ms1ze.blogspot.com/2016/03/ssltls-c.html
+ формирование REST + формирование POST добавил

вот к примеру что то есть https://github.com/mrtazz/restclient-cpp

Vlad-76 ★★★★
()
Ответ на: комментарий от Vlad-76

Фигасе, спасибо

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

wolverin ★★★
() автор топика
Последнее исправление: wolverin (всего исправлений: 2)
Ответ на: комментарий от Vlad-76

где то 200кб приплипло вместе со статичной линковкой libboost_system.a, которая сущие слезы 50кб

уже даже что то шлется, ну покрайней мере fcm.googleapis.com в ответ перестал на меня матюгаться…. вот только не пойму почему в мобильное приложение не приходит пуш ))

wolverin ★★★
() автор топика
Ответ на: комментарий от s-warus

ну там куча всего вертится, авгиевы конюшни там, это же не единственное чтобы пуши слать.

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

wolverin ★★★
() автор топика
Ответ на: комментарий от eao197

Вдруг кто-то, вроде меня, ответит вам специально «бери Boost.Asio, он на 22.5% эффективнее libcurl».

Там тсу уже написали, что libcurl ужос хтонический) Так что вполне может быть Boost.Asio)

goingUp ★★★★★
()
Ответ на: комментарий от goingUp

С Boost.Asio всю работу с HTTP придется ручками вписывать. Вероятно, он просто захардкодил набор заголовков для своего POST-а и все, а из ответов только что-то одно воспринимает (и парсит это дело ручками).

Можно было бы взять Boost.Beast из того же Boost-а (раз уж он Boost в проект затягивает). Получилось бы не сильно сложнее, имхо.

Не говоря уже про упоминавшися выше cpp-httplib, который, емнип, поверх все того же Boost.Asio, и у которого все вообще весьма компактно записывается.

При этом в случае с Boost.Beast или cpp-httplib (как и в случае какой-то обертки над libcurl) есть надежда на корректную обработку неожиданного ответа сервера (типа редиректа). Тогда как в случае с хардкодингом ТС-а… Но не думаю, что его это волнует.

eao197 ★★★★★
()
Ответ на: комментарий от eao197

)) все именно так, у меня не хождение по ентернету, а использование чужого апи, которое всегда одно, а когда другое, то уже ничего не работает, как вот давеча SOAP апи в сберовской экваринге поменяли втихаря и техподы не бельме о том, что же изменилось, но там проще для java перевыгрузил из wsdl и поехало дальше.

wolverin ★★★
() автор топика
Ответ на: комментарий от wolverin

)) я и жсон собираю в стд::стринг БЕЗ проверки синтаксиса какими то либами, сто раз так делал и все летает!

wolverin ★★★
() автор топика
Последнее исправление: wolverin (всего исправлений: 1)