Mediumsbooptimization
Что такое small buffer optimization (SBO) и где он используется?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
SBO — хранение небольшого количества данных прямо внутри объекта, без динамической аллокации. Для маленьких значений нет malloc/free — быстрее и лучше локальность кэша.
std::string s1 = "hi"; // хранится внутри объекта (SSO), нет heap
std::string s2 = "очень длинная строка..."; // выделяется на heap
// std::function хранит small callable внутри (16-32 байта),
// для больших функторов аллоцирует
std::function<void()> f = []{ /* small */ }; // inlineГде используется: std::string (SSO до 15-22 байт в зависимости от реализации), std::function, boost::small_vector<T, N> (встроенный буфер на N элементов).
Недостатки: объект больше (всегда резервирует SBO size), сложнее реализация. Критичен для производительности часто используемых типов.
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.