LINUX.ORG.RU

POCO vs GCC

 ,


0

1

Предстоит перелопатить говнопроект, написанный с помощью этой библиотеки для ARMHF архитектуры.

как то все «в блокноте» писал раньше небольшое, потом через gcc собирал, хотя вряд ли для армки можно что то архисложное написать (ffmpeg + ffserver удалось «в блокноте» втащить в своей проект)

Есть смысл выкидывать это поделие или лучше с ним разбираться? Проблемы говнопроекта сами по себе многогранны, хотя и используются доступы в БД и HTTP, многопоточность очевидно, может что то еще (XML и JSON точно понадобятся)

В задаче есть ограничение на ресурсы как по памяти, так и высоконагруженное цпу

★★★

Последнее исправление: wolverin (всего исправлений: 2)

говнопроект

как то все «в блокноте» писал раньше

Не стоит разбрасываться так словами, если опыта написания кода не так много.

используются доступы в БД и HTTP, многопоточность очевидно, может что то еще (XML и JSON точно понадобятся)

Т.е. то что делается через POCO в проекте? И как ты собираешься со всем этим работать? Написать свои кучки из говна и палок? Ты уверен, что сделаешь это лучше, чем 150 программистов развивающих библиотеку на протяжении многих лет?

Есть смысл выкидывать это поделие или лучше с ним разбираться?

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

есть ограничение на ресурсы как по памяти, так и высоконагруженное цпу

Профилировка в помощь.

POCO vs GCC

Мандарины vs Шурупы

AlexVR ★★★★★
()

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

Какое именно? POCO или говнопроект? Чтобы выкидывать POCO нужно сначала найти альтернативу.

Проблемы говнопроекта сами по себе многогранны

Одна из проблем это видимо разработчик(и).

Насколько я помню POCO очень даже приятная библиотека, простая и вразумиельная. Мне вот кажется это последнее к чему можно было бы докопаться в каком-нибудь «говнопроекте».

no-such-file ★★★★★
()
Ответ на: комментарий от AlexVR

И как ты собираешься со всем этим работать?

большую часть функционала просто выкинуть и/или перенести его в один, например, заменить работу с БД+MQTT, только на MQTT

Есть смысл разобраться в проекте

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

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

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

интересное утверждение, вот ffserver 20 лет разрабатывали, потом 100500 программистов поняли, что это говно и выпилили его )) хотя не знаю почему, у меня вроде это поделие как то работает.

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

Не знаю росо в том виноват или нет, но в целом это нестабильная работа с зависанием, что говорить если «разработчик» через сутки делает ребут своего поделия, чтобы с утечками не разбираться

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

Не знаю росо в том виноват или нет

Ну давай порассуждаем. Что более вероятно является проблемой: общепризнанная библиотека которую пилят сотни людей на протяжении многих лет, или говнокод каких-то васянов?

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

Я ж уже привел пример про сотни лет и людей.

В любом случае чем проще система, тем она стабильней.

В сравнении бууста и росо судя по Гуглу не в пользу последнего по отзывам.

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

Не знаю росо в том виноват или нет, но в целом это нестабильная работа с зависанием, что говорить если «разработчик» через сутки делает ребут своего поделия, чтобы с утечками не разбираться

И при чём тут POCO? Всё что ты описал, говорит о некорректности вашего кода. А в этом абзаце есть уже две задачи:

  1. Выявить почему зависает.
  2. Выявить причины утечки памяти.

Так что:

  • Включаем -Wall -Wextra -Wpedantic и исправляем все варнинги.
  • Запускаем через valgrind и ищем утечки памяти.
  • Добавляем санитайзеры.
  • Натравливаем clang-tidy, cpplint, cppcheck и т.п.
  • Правило «трёх, пяти, нуля»:
    • избавляем код от всех явных new/delete, заменяя на std::unique_ptr / std::shared_ptr / std::vector / ...
    • «один класс явно управляет одним ресурсом».
  • Добавляем логирование.

Всё что ты описываешь говорит о необходимости решения проблем, а не смены библиотеки или переписывания кода.

AlexVR ★★★★★
()
Ответ на: комментарий от no-such-file

Насколько я помню POCO очень даже приятная библиотека, простая и вразумиельная

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

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

привел пример про сотни лет и людей

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

no-such-file ★★★★★
()
Ответ на: комментарий от no-such-file

Ну это проблемы тех, у кого вянут.

у меня судя по размеру половина проекта (ту часть что надо добавить в чужой проект) будет на Сях (ffmpeg/ffserver + paho - да думаю выбросить и вариант С++ пахо и использовать только С-ую часть, поскольку мс важны), что актуально и для утверждения ниже

избавляем код от всех явных new/delete

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

возникает тогда вопрос - а нафига вообще писать на плюсах - вариантов то попроще завались

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