Высокопроизводительные альтернативы STL? - PullRequest
8 голосов
/ 23 ноября 2011

Какие кеш-дружественные высокопроизводительные альтернативы существуют традиционным STL.Они должны быть оптимизированы для кэшей современных 64-битных процессоров Intel / AMD.

Я не ищу официальных реализаций STL, основанных на стандартах, обязательно он может быть основан на этом или быть расширенным STL с высокопроизводительными структурами данных.Или просто библиотека, которая предоставляет общие структуры данных, такие как список, карта и т. Д.

Высокий параллелизм и блокировка свободных структур данных будет бонусом.

Я заинтересован в ссылке и лицензии.

Я читал о EASTL и раньше использовал Boost.

Что разработчики игр и научное сообщество используют для получения максимальной отдачи от процессоров в данный момент?Что находится в конвейере?

Ответы [ 3 ]

10 голосов
/ 23 ноября 2011

+ 1 для EASTL.

Все, что основано на компиляторе, совместимом с C ++ 11, потенциально будет работать намного лучше из-за семантики перемещения.

Это различие уже можно заметить с помощью реализации GNU libstdc ++ с -std=c++0x

Для контейнеров с параллельным доступом и без блокировки я рекомендую:

  • libCds от Max Khiszinsky
  • TBB от Intel (без практического опыта)

Мой центральный совет будет следующим:

Оптимизация стандартной библиотеки - это в основном фактор, определяющий, как правильно использовать алгоритмы / контейнеры, чем поискдля «идеальной» реализации.STL, будучи универсальным, никогда не будет идеальной реализацией.

Просто внимательно следите за вашими возвращаемыми / выходными параметрами (предпочитайте использовать выходные итераторы и используйте transform, partial_sum, accumulate в контейнер, для которого reserve или resize вызван соответствующим образом; определите swap для ваших типов элементов и т. д.)

1 голос
/ 17 ноября 2014

Boost Compute определенно занял второе место.

http://boostorg.github.io/compute/

1 голос
/ 23 ноября 2011

Я полагаю, что стандартная адаптивная параллельная библиотека шаблонов STAPL , вполне может быть одним из наиболее важных исследований в настоящее время.

Microsoft вкладывает значительные усилия в Библиотеку асинхронных агентов , в которой есть ряд хорошо протестированных высокопроизводительных контейнеров для передачи сообщений.

У Intel есть собственное предложение, Thread Building Blocks , которое содержит ряд контейнеров и алгоритмов параллельной обработки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...