在C++中,字符串处理的性能对程序整体效率影响很大,尤其是频繁创建、拷贝和销毁字符串的场景。其中,SSO(Small String Optimization,短字符串优化) 是标准库(如libstdc++、libc++)中 std::string 实现的一项关键技术,能显著提升短字符串操作的性能。
什么是SSO(短字符串优化)?
std::string 通常采用堆内存来存储字符串内容,但每次堆分配都会带来开销。SSO 的核心思想是:对于较短的字符串(一般长度在15~22字节以内,具体取决于实现),不使用堆内存,而是直接在对象内部的固定缓冲区中存储字符。
这意味着:
- 构造和析构无需动态内存分配
- 拷贝操作变为内存复制(memcpy),更快
- 减少内存碎片
例如,在x86-64上,libstdc++的std::string通常有16字节内部缓冲,可容纳15个字符+’