boost vs STL

Тема в разделе "LANGS.C", создана пользователем cupuyc, 15 авг 2010.

  1. cupuyc

    cupuyc New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2009
    Сообщения:
    763
    Вот думаю насколько эффективно использование boost'а. Библиотека довольно удобная. Много всяких шаблонов, готовых классов. Т.е. абстрагирование кода от конкретных АПИшек уже произведено. Можно без особых проблем писать мультиплатформенный софт. Обычный STL сильно ограничен. Есть только списки, массивы, строки и пр. Даже с потоками там сильная напряжёнка. ATL - вообще кривущее создание, про него и говорить не будем.

    С другой стороны, за что я люблю STL - это за то, что при отладке переменные отображаются в удобочитаемом виде (в Visual Studio). Легко можно посмотреть элементы вектора, списка и т.п. Если использовать стороннюю библиотеку шаблонов, то такая возможность пропадает.

    Ещё меня интересует эффективность бустовского кода. Где-нибудь есть сравнительные тесты boost, стандартного stl?
     
  2. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    cupuyc
    stl у каждого компилятора своя
     
  3. cupuyc

    cupuyc New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2009
    Сообщения:
    763
    GoldFinch, это понятно. Интересует VC, gcc.
     
  4. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    > stl у каждого компилятора своя
    stl - часть стандарта.
    реализации может быть и различаются, однако интерфейсы - одинаковы.
    stl и boost совсем не конкуренты, они находятся в разных плоскостях.
     
  5. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    n0name
    реализации не "может быть различаются", а различаются.
    cupuyc'у надо быстродействие, что толку ему с одинаковых интерфейсов %)

    > stl и boost совсем не конкуренты, они находятся в разных плоскостях.
    хз какие разные плоскости, часть буста - это std::tr1, соответственно часть STL - это буст
     
  6. diamond

    diamond New Member

    Публикаций:
    0
    Регистрация:
    21 май 2004
    Сообщения:
    507
    Адрес:
    Russia
    Вообще-то VS читает правила отображения объектов сложных типов из текстового файлика Common7\Packages\Debugger\autoexp.dat. Куда нетрудно добавить свои правила отображения по образу и подобию стандартных. Так что возможность не пропадает.
     
  7. maksim_

    maksim_ New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2009
    Сообщения:
    263
    Интересно.. А нет никакого диалога настройки отображения? С текстовым файлом не очень удобно возиться..

    И несколько странно, что MS для своих AtlArray'ев сразу не задала соответствующие настройки отображения. Фичу прикрутили, а её функциональность толком не использовали..
     
  8. maybeZ3N

    maybeZ3N New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2010
    Сообщения:
    80
    Я не видел, зато есть описание у Роббинсона в его "Отладка приложений ..."
     
  9. diamond

    diamond New Member

    Публикаций:
    0
    Регистрация:
    21 май 2004
    Сообщения:
    507
    Адрес:
    Russia
    Нет. Но копипаст определённо удобнее делать в текстовом файле, чем среди диалогов настройки.
     
  10. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    про визуализацию структур данных говорили на бустконе2010
    http://www.filetolink.com/17ad36ef
     
  11. green

    green New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2003
    Сообщения:
    1.217
    Адрес:
    Ukraine
    cupuyc
    Boost можно рассматривать как экспериментальное расширение STL. Со временем код boost перетекает в STL. Что касается эффективности - сильно зависит от адекватности применения, будь то STL или Boost. Что, в свою очередь, требует изучать не только интерфейсы, но и внутренности библиотеки.
     
  12. Hairy

    Hairy Сёма

    Публикаций:
    0
    Регистрация:
    25 янв 2008
    Сообщения:
    39
    Адрес:
    Ад на земле
    Господа!

    1) STL - это часть стандарта языка С++ и над его оптимизацией бьются разработчики компиляторов.
    2) в следующий стандарт языка С++ обещали включить большую часть BOOST, то бишь он станет на ровне с STL

    :) ИМХО "STL vs BOOST" это все равно что STL vs STL или BOOST vs BOOST.... да возможно сейчас еще не все компиляторы "заточены" для оптимизации BOOST-а, но думаю это случить довольно скоро.
     
  13. RedLord

    RedLord Member

    Публикаций:
    0
    Регистрация:
    23 июн 2005
    Сообщения:
    183
    Адрес:
    Ukraine
    Hairy

    не всегда. например для студии, STL пишет Dinkum.

    скорее меньшую

    это - несопоставимые сущности.
     
  14. maksim_

    maksim_ New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2009
    Сообщения:
    263
    #5

    Имеют одинаковые интерфейсы, значит и быстродействие можно сравнить. Так? Можно взять какой-нибудь проект и заменить стандартный стл на буст, провести профайлинг.

    А над оптимизацией буста бьются разработчики буста. Причём, насколько я понял, над бустом работает не одна компания. Некоторые модули написаны, например, Adobe. О чём говорит ваше утверждение - не понятно.
     
  15. RedLord

    RedLord Member

    Публикаций:
    0
    Регистрация:
    23 июн 2005
    Сообщения:
    183
    Адрес:
    Ukraine
    maksim_
    в STL есть вектор.
    в бусте есть своя реализация?
     
  16. Hairy

    Hairy Сёма

    Публикаций:
    0
    Регистрация:
    25 янв 2008
    Сообщения:
    39
    Адрес:
    Ад на земле
    2RedLord
    время покажет....
    а сравнить можно все, даже жопу с пальцем :)
    пожалуйста: http://www.boost.org/doc/libs/1_43_0/libs/fusion/doc/html/fusion/container/vector.html
    и даже map: http://www.boost.org/doc/libs/1_38_0/libs/fusion/doc/html/fusion/container/map.html
    ... и еще туева хуча всего :)
     
  17. RedLord

    RedLord Member

    Публикаций:
    0
    Регистрация:
    23 июн 2005
    Сообщения:
    183
    Адрес:
    Ukraine
    Hairy

    это вектор, имеющий
    ??????

    насколько я вижу -нет.
    а это правда. и некоторым блестяще это удается.
     
  18. maksim_

    maksim_ New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2009
    Сообщения:
    263
    значит плохо смотрите.
     
  19. Hairy

    Hairy Сёма

    Публикаций:
    0
    Регистрация:
    25 янв 2008
    Сообщения:
    39
    Адрес:
    Ад на земле
    2RedLord
    не важно кто пишет, важно что данный момент включен в компилятор
    время покажет

    2maksim_
    о том что некоторые вещи физически нельзя соптимизировать на существующих компиляторах, и более эффективно оптимизировать их в самих компиляторах
    Кстати об Adobe и т.п. у меня хороший товарищ работает в отделе компиляторов Intel (оптимизации), так вот основные заказчики у них это как раз Adobe, Oracle и т.д. и многие "фишки" или требуемые "моменты" как раз оптимизируют не разработчики Adobe или Oracle а именно разработчики компиляторов (под конкретную архитектуру).

    2RedLord
    по-моему очень даже можно сравнить, при желании Вы так не находите?
    Код (Text):
    1. STL:
    2. Iterators:
    3. begin
    4. end
    5. rbegin
    6. rend
    7.  
    8. Capacity:
    9. size
    10. max_size
    11. resize
    12. capacity
    13. empty
    14. reserve
    15.  
    16. Element access:
    17. operator[]
    18. at
    19. front
    20. back
    21.  
    22. Modifiers:
    23. assign
    24. push_back
    25. pop_back
    26. insert
    27. erase
    28. swap
    29. clear
    30.  
    31.  
    32. BOOST:
    33. Iterators:
    34. begin
    35. end
    36. rbegin
    37. rend
    38.  
    39. Capacity:
    40. size
    41. max_size
    42. resize
    43. capacity - отсутствует
    44. empty
    45. reserve - в составе resize
    46.  
    47. Element access:
    48. operator[]
    49. at - отсутствует
    50. front - begin
    51. back - end
    52.  
    53. Modifiers:
    54. assign
    55. push_back - отсутствует
    56. pop_back - отсутствует
    57. insert - insert_element
    58. erase - erase_element
    59. swap
    60. clear
    ... или Вам нужно 100% совпадение название методов?


    2RedLord
    если Вы это про меня, то могу посоветовать брызгать слюной где-нибудь в другом месте, так как это не помогает конструктивному общению
     
  20. RedLord

    RedLord Member

    Публикаций:
    0
    Регистрация:
    23 июн 2005
    Сообщения:
    183
    Адрес:
    Ukraine
    maksim_

    если я правильно смотрю, то push_back выглядит fusion так:
    fusion::vector2<int, long> v(fusion::push_back(fusion::push_back(empty, 123), 456));
    в STL
    std::vector<int> x;
    x.push_back(123);

    кроме того, в бусте - вектор может хранить различные типы, чего в STL - нет