ExpertiDict

C++ · Avançado · Inglês · Técnico

small string optimization

smɔːl stɹɪŋ ˌɑːp.tɪ.maɪˈzeɪ.ʃənsubstantivo

Otimização das implementações de std::string que guarda textos curtos dentro do próprio objeto, sem alocar no heap. O limite varia entre implementações, em geral 15 ou 22 caracteres.

Onde usar

Explica por que strings curtas são rápidas e por que sizeof(std::string) é 32 bytes na libstdc++ e 24 na libc++. Em desempenho, influencia mover ou copiar strings.

Em código

std::string a = "curta";  // buffer interno
std::string b(40, 'x');    // heap
std::cout << sizeof(std::string);  // 32
std::cout << a.capacity();  // 15 no GCC

Exemplos

Short names fit in small string optimization, no allocation.

Nomes curtos cabem na small string optimization, sem alocação.

That string is 40 chars, so it exceeds the small buffer.

Essa string tem 40 caracteres, então estoura o buffer pequeno.

Cuidado

Não é exigida pelo padrão e o limite muda por implementação; não conte com ela, e lembre que mover uma string curta copia os bytes.

Sinônimos

SSO

Veja também

Todos os termos de C++