boost vs STL

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

  1. cupuyc

    cupuyc New Member

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

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

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

    GoldFinch New Member

    Публикаций:
    0
    cupuyc
    stl у каждого компилятора своя
     
  3. cupuyc

    cupuyc New Member

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

    n0name New Member

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

    GoldFinch New Member

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

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

    diamond New Member

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

    maksim_ New Member

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

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

    maybeZ3N New Member

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

    diamond New Member

    Публикаций:
    0
    Нет. Но копипаст определённо удобнее делать в текстовом файле, чем среди диалогов настройки.
     
  10. GoldFinch

    GoldFinch New Member

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

    green New Member

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

    Hairy Сёма

    Публикаций:
    0
    Господа!

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

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

    RedLord Member

    Публикаций:
    0
    Hairy

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

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

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

    maksim_ New Member

    Публикаций:
    0
    #5

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

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

    RedLord Member

    Публикаций:
    0
    maksim_
    в STL есть вектор.
    в бусте есть своя реализация?
     
  16. Hairy

    Hairy Сёма

    Публикаций:
    0
    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
    Hairy

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

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

    maksim_ New Member

    Публикаций:
    0
    значит плохо смотрите.
     
  19. Hairy

    Hairy Сёма

    Публикаций:
    0
    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
    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 - нет