![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
Iron Bug |
![]()
Сообщение
#1
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: ![]() ![]() ![]() |
Хочу представить вам библиотеку, с которой я познакомилась на новой работе: ACE.
Я, конечно, сразу решила провести тестирование новой для меня библиотеки и сравнить её с boost. Я сравнивала эфффективность работы ACE_Cached_Allocator и boost::pool: замеряла время, требуемое на заполнение пула элементами и очистку пула (по одному элементу). Я написала тест сравнения работы с пулами памяти. И результат меня поразил: ACE не только быстрее буста, но и эффективнее использует память! Если интересно, вот тест, который я написала (тест под линь, венды у меня сейчас просто нет в наличии, но можно его быстро перекроить под венду, если заменить блок с установкой риалтайм приоритета у потока), Раскрывающийся текст
То есть, по памяти boost занял 1928499200 байт, а ACE - всего 854814720 байт. Я позже приведу данные, их сейчас нет под рукой - забыла на работе, взяла не те данные ![]() Но по памяти выигрыш был в 2.25 раза, а по скорости, при профилированной оптимизации, скорость увеличивалась от 0.6 до 0.8. Я ещё буду тестировать ACE, ибо меня интересует выбор самой оптимальной библиотеки для работы. Но этот результат меня удивил и неожиданно поколебал мою приверженность к boost'у. Поэтому я решила написать об этом здесь. Может, кто-то проверит тест под вендой: было бы интересно узнать результаты. Правда, я не знаю, как под вендой измерять максимум используемой памяти. Но хотя бы скорость можно сравнить. Сообщение отредактировал Iron Bug - 19.12.2013, 19:44 |
|
|
Iron Bug |
![]()
Сообщение
#2
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: ![]() ![]() ![]() |
Протестировала дома, на линюксе (с работы результаты взяла не те - они исказились valgrind'ом).
Вот результаты после оптимизации с профилями: Раскрывающийся текст Цитата bla-bla-bla$ sudo ./TestPool 1 1000000 2 99 15715733 nanoseconds 3606376 nanoseconds bla-bla-bla$ sudo ./TestPool 2 1000000 2 99 11209115 nanoseconds 4830111 nanoseconds Первый запуск - это boost, второй запуск - ACE. Дома тестировала на ноуте, под Дебианом. ноут слабенький, поэтому пришлось взять небольшое количество элементов. а на более мощном компе на работе с бОльшим количеством разница получалась ещё более существенная, в пользу ACE. По памяти вышло 41254912 байта для буста и 32952320 - для ACE. |
|
|
Litkevich Yuriy |
![]()
Сообщение
#3
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
Эдик начинал про неё в Wiki писать: http://www.wiki.crossplatform.ru/index.php/ACE
но потом дело заглохло. |
|
|
Iron Bug |
![]()
Сообщение
#4
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: ![]() ![]() ![]() |
да, я видела в вики информацию. но не предполагала, что это такая хорошая библиотека.
на новой работе её используют. я решила сравнить её с бустом и результаты меня удивили. конечно, разница иногда не так велика, но я заметила, что чем больше процессоров на машине - тем она существеннее. видимо, ACE хорошо оптимизируется под многопоточность. единственный минус - довольно скудная документация. точнее, почти никакой документации. но кое-что удалось нарыть. вот, сижу, изучаю возможности новой для меня библиотеки. у разработчиков ACE поставляется сразу несколько библиотек. я пока с ними знакомлюсь в общих чертах. Сообщение отредактировал Iron Bug - 21.12.2013, 11:14 |
|
|
ViGOur |
![]()
Сообщение
#5
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: ![]() ![]() ![]() |
Угумс, давно доастаточно с ней работал. ACE заточена под работу с многопоточностью и сетью.
У меня есть книги по ACE, в принципе их можно найти в сети, но если нужно пиши, поделюсь: Douglas C. Schmidt, Stephen D. Huston - C++ Network Programming, Volume 1: Mastering Complexity with ACE and Patterns Douglas C. Schmidt, Stephen D. Huston - C++ Network Programming, Volume 2: Systematic Reuse with ACE and Frameworks |
|
|
Iron Bug |
![]()
Сообщение
#6
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: ![]() ![]() ![]() |
да, я кое-что нарыла на торрентах.
она действительно очень хорошо заточена под многопроцессорные системы и распараллеливание. очень эффективно работает на серверах с несколькими процессорами. я пока использую и ACE, и boost. где-то побеждает одна библиотека, где-то - другая. на каждый случай я пишу мелкие тесты и сравниваю. |
|
|
![]() ![]() ![]() |
![]() |
Текстовая версия | Сейчас: 16.2.2025, 16:10 |