
什么是SBO(小字符串优化)
SBO 是 Small String Optimization 的缩写,是 C++ 标准库中 std::string 实现的一种常见性能优化技术。它的核心思想是:**对短字符串不堆分配内存,而是直接把字符存放在 string 对象内部的固定缓冲区中**。
比如一个空字符串或长度仅几个字符的字符串(如 "hello"),如果每次都要调用 new 分配堆内存,开销大、缓存不友好、还容易造成碎片。SBO 就是为解决这个问题而生的——它让小字符串“自给自足”,避免了动态分配。
SBO 在 libc++、libstdc++ 和 MSVC 中的典型实现
不同 STL 实现对 SBO 的具体策略略有差异,但逻辑一致:
- libc++(LLVM):默认使用 23 字节的内部缓冲区(含结尾