Змінити Повернення до цього питання через кілька років
Продовжуючи використовувати все нові й нові бібліотеки, я подумав би оновити це питання, щоб навести ґрунтовний випадок, чому слід використовувати прискорення, коли опис продукту відповідає бажаному функціоналу. У цьому переконають навіть най-кажуть. Завантажте openSSL, спробуйте зробити з ним клієнтську та серверну програму. Тепер спробуйте зробити цю роботу на кожній платформі. Потім завантажте та використовуйте boost :: asio :: ssl, щоб зробити ту саму програму. Якщо ви не впевнені, що стимулювання - це правильне місце для пошуку чистого, добре оптимізованого, рецензованого, кросплатформенного коду, ця проста вправа перетворить вас.
Tl; dr версія:
На мою думку, ви не бачите тонни інді чи середніх фірм, що займаються розробкою середнього розміру, які використовують прискорення, тому що це масивний і потужний дикий звір, якого нелегко приручити, і ви в основному самостійно намагаєтеся навчитися використовувати його. Документації не вистачає кількома способами (див. Довгу версію), і "громада" навколо проекту або здається відсутнім, розсіяним або неактивним (порівняно з іншими проектами).
Дуже довга версія:
Я розумію, що вже прийнята відповідь, але як хтось, хто насправді використовує імпульс майже в кожному проекті, який я роблю, я думав, що опублікую відповідь.
Я пам’ятаю, коли я вперше поскакував поштовхом і, чесно кажучи, я не мав лякаючої ідеї, що відбувається. Підвищення зовсім не дуже добре документоване. Люди можуть не погодитися зі мною в цьому, я впевнений, тому що є багато фрагментів прикладу коду та коментарів, і таке інше, але все це дуже холодно і невиразно, а також важко орієнтуватися.
Крім того, важко знайти будь-яке місце, де ви відчуваєте, що знайшли "спільноту" навколо проекту. Насправді громада здається неіснуючою чи кочовою. На жаль, навіть їх списком розсилки було перероблено так багато сайтів з п'явками, що ви можете спуститись із цієї кролячої нори, завжди перекидаючись туди, куди ви почали.
Ці два фактори роблять навчання використання прискорених бібліотек досить складним завданням. Навіть якщо технічні можливості використання boost не надмірно складні, це величезний набір бібліотек, і це дивиться, коли все, що ви озброєні, - це кілька фрагментів коду та розпорошені фрагменти списку розсилки з найтемніших куточків Інтернету. ... ну ви зрозуміли ідею.
Я зайнявся майстерністю з прискоренням версії 1.45, і лише зараз у версії 1.52 / 1.53 я відчуваю себе досить комфортно, щоб використовувати його у виробництві. Є так багато речей, до яких можна звикнути і запам'ятати, навіть прості речі, такі як налаштування прискорення та запам'ятовування цієї конфігурації, тому що, як побудовані та функціонують бібліотеки, може різко змінюватися залежно від ваших уподобань під час компіляції через те, як налаштовані речі є.
Однак , не помиляйтесь , як тільки ви зможете досягти прискорення, ви отримали потужну зброю для швидкого створення міцних, багатоплатформних програм. Візьмемо boost::asio
для прикладу. Ви можете написати асинхронний веб-сервер надзвичайно потужного, масштабованого та непомітного крос-платформного просто за пару сотень рядків. Я написав декілька клієнтів, серверів, проксі-серверів тощо протягом багатьох років, лише кілька сотень рядків коду, які мені ще не підлягають, і можу перенести їх з платформи на платформу за лічені хвилини.
Як зазначали інші, більші компанії, як правило, застрягають зі спадщиною або люблять згортати власні, які я цілком розумію. Існує також ця справді нерозумна річ, про яку я чув і стикався, де розробники ведуть і / або керівники проектів забороняють використовувати прискорення, оскільки воно "занадто велике". Я гадаю, що вони вважають, що підвищення є однією бібліотекою або вони ніколи не чули про BCP .
Щодо ЧОМУ я вибираю використовувати boost
Я б сказав, що я його використовую, оскільки, як ви розумієте у своєму запитанні, це "бібліотека C ++". Збільшення розглядається у світі С ++ як швейцарський армійський ніж речей, які в кінцевому підсумку вам потрібно буде використовувати. Тож ідея полягає у тому, що якщо є потреба, то має бути високоефективна та портативна версія цього прискорення. Великі компанії сприяють збільшенню , дуже освічені люди з вражаючими резюме сприяють і підтримують його , і коли розробляється новий стандарт C ++, люди зазвичай намагаються підвищити рівень бачення того, які частини його повинні стати стандартизованими ISO + C ++.
Тож якщо мені потрібно додати певну функціональність, для якої, ймовірно, існує існуюча бібліотека, перше місце, на який я буду виглядати, - це підвищення лише тому, що я досить впевнений у ставці на те, що він досить добре оптимізований, портативний, він буде підтримуватися та підтримуватися для дуже довго і помилки будуть знайдені та вирішені. У світі з відкритим кодом ці якості можуть бути дуже важкими.