C++备忘录076:新的就是好的,Small String Optimization

本文探讨了C++中的Small String Optimization(SSO),指出从gcc 5开始,长度小于等于15的字符串将直接存储在结构体内,避免了动态内存分配,从而提高了性能。相比之下,gcc 4.8.5总是进行动态内存分配。同时,作者提出疑问,为何有些项目坚持使用旧编译器,而不是利用新版本带来的性能提升,并强调有多种测试工具可以确保升级的安全性。
摘要由CSDN通过智能技术生成

最近的接触的一个项目还在用gcc 4.8.5,除了这年月还在用C++98让我抓狂外,老编译器也会带来无谓的性能上的损失,即使代码是完全一样的

gcc 5之后增加了SSO的支持,当字符串长度不大于15的时候,不会进行动态内存分配,而是直接存储在std::string的结构体内

#include <cstdlib>
#include <iostream>

void* operator new(size_t n) {
   
    std::cout << "\tallocates\n"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值