Как понять когда нужно использовать буст, а когда нет?
Пишу кроссплатформенное сетевое приложение на плюсах для синхронизации файлов. Никак не могу определиться писать ли на "чистом С++" или с применением буста.
Если я пишу на чистых плюсах, то приходится использовать много чисто СИшных функций, например для тех же сокетов или операций со списками файлов в папке и получается мешанина из 2х языков. Зато проект собирается влёт. В этом случае уже мелькает мысль вообще на чистом си писать. Но тут надо писать свои велосипеды типа таймеров, парсер конфигов итд
Если тот же проект начинаю реализовывать с бустом, то тут всё выглядит коротко и в стиле плюсов со всеми нужными вещами, но зато увеличивается время компиляции приложения и ещё надо таскать бустовые библиотеки за собой.
kloppspb: Ну, всё относительно. К счастью, работаю не в офисе, начальства нет. А от времени компиляции напрямую зависит производительность, и соответственно, заработок.
Дмитрий: у меня беда еще с АРМ устройствами там при использовании буста скорость компиляции увеличивается в десятки раз для каждого файла. Вместо 3х секунд на 1 файл все 30
Нужно выносить его в Precompiled Header. Вообще, всё, что часто используется в проекте и редко изменятся, можно туда вынести. Он скомпилируется один раз и больше не будет пересобираться, если его не изменять.
LittleBuster , вопрос использования буста можно отнести к риторическим. :)
Вопрос не является ни конструктивным, ни политкорректным, ни толерантным. У буста столько же поклонников, сколько и противников. В целом, на вопрос стоило бы пожаловаться за разжигание дискуссии. :)
Буст или нужен и команда отчетливо себе представляет для чего, или не нужен.
У меня есть пример, когда с использованием буста был разработан один очень крупный проект. Были использованы все техники ускорения сборки, включая многопроцессорный сервер сборки, пресловутые precompiled header и амальгамирование.
И, не смотря на это, чистая сборка всего проекта все равно занимала порядка 3-4 часов. А при отладке средний исходник компилировался порядка минуты.
Пробовал я и modular boost подключить. Ради включения asio и context пришлось подтянуть еще около 22 зависимостей, что, как бы, представляет нехилый кусок буста. Это все так же отразилось на времени сборки.
Одним словом: если, находясь в здравом уме и трезвой памяти, вы всей командой хорошо себе представляете что без буста будет больнее, то используйте. Иначе инструмент лучше не использовать.
Ну, даже STL многие не любят, я в том числе. А если устраивает, то буст стоит использовать только потому, что много чего из него потенциально может перекочевать в STL. А современный Asio вообще не требует никаких зависимостей, насколько я помню, откуда у вас набралось их аж 20 штук?
Если пишете что-то кроссплатформенное где будет много работы с сетью, то буст незаменим. Если же из буста нужно пару-тройку мелких функций задействовать (и в дальнейшем функциональность не будет расширяться), то можно и и самому написать. Правда, вам вероятно еще и с файловой системой придётся работать... Так что скорее всего вам нужен буст.
Можно и другие библиотеки рассмотреть, которых, к слову, не так уж и мало.