Spiiin's blog

Внутрь STL. Ссылки

Ссылки на тему особенности реализации классов библиотеки STL и других библиотек контейнеров.

Основные источники вдохновения, когда стандартных контейнеров STL не хватает: EASTL, LLVM containers, Folly, Boost.

EA Standard Template Library - альтернативная стандартная библиотека от Electonics Arts, появившаяся ещё тогда, когда стандартные реализации были сомнительного качества и развивающаяся и сейчас.
EASTL — Electronic Arts Standard Template Library - описание классов, отличий от STL и принципов дизайна.
EASTL Best Practices - сборник советов, как пользоваться.

LLVM Data-structures overview - доклад Marcello Maggioni о структурах данных, используемых в LLVM.
LLVM Programmer’s Manual - более детальное описание

Folly - набор библиотек Facebook.
CppCon 2016: Nicholas Ormrod “The strange details of std::string at Facebook” - доклад про реализию folly::String

Boost - документация к библиотекам буст.
Многое из полезных буст библиотек уже и так в STL (нужно быть очень благодарным авторам Boost за это).
Optimizing using an exotic associative container - Boost flat_map to the rescue

Zmeya - библиотека stl-like контейнеров для быстрой сериализации.
Benchmark of major hash maps implementations - бенчмарк реализаций хеш-таблиц.

Stlab - стандартные библиотеки Adobe, расширяющие функционал STL. Подход немного отличается от стандартного ООП в сторону Value Oriented Programming, много материалов на странице Шона Пэрента, с отсылками к Александру Степанову. Подход периодически разбирается на конференциях, пример - Keynote: SOLID, Revisited - Tony Van Eerd - [CppNow 2021]

Доклад The Performance Price of Dynamic Memory in C++ - Ivica Bogosavljevic про различные аспекты оптимизации, часто ссылается на статьи из своего блога:


Process polymorphic classes in lightning speed - статья со сравнением скорости обработки полиморфных объектов. Почти все статьи в блоге посвящены оптимизации, часто касаются структур данных и контейнеров из STL.

Polymorphic Vector - класс для обработки вариантов полиморфных объектов.
stack_alloc - простая реализация кастомного аллокатора для STL-контейнеров.
Intrusive hash - быстрые хеш-таблицы.

C++ Performance: Common Wisdoms and Common “Wisdoms” - много советов про выбор STL и EASTL контейнеров.

Classes With Many Fields - Stanisław J. Dobrowolski - по таймингу ссылки на решения для сокращения объема классов в в проектах - Chromium, Firefox, LLVM, VLC, GZDoom.

CPP Optimizations Diary - блог со статьями по оптимизации C++-кода.
Do you actually need to use std::map? - сравнение производительности поиска в std::map и std::vector<std::pair<KeyType, ValueType>>.

Shahar’s C++ posts - серия постов Shahar Mike с разбором реализации некоторых STL-классов.

Книги
Scott Meyers books - суперполезная серия Effective, включая немного устаревшую Effective STL (лучше читать с пониманием, что изменилось в C++11/14/17).
More C++ Idioms - Набор полезных материалов и ссылок с объяснениями идиом C++, в том числе используемых в библиотеках STL и Boost.