一些初步性能优化的思路,后续可更新相关代码案例,点赞收藏啊喂[嘤嘤嘤]原则:多优化hot代码,多考虑八二原则容器避免动态内存分配使用vector.reserve()进行初始化强行在栈上分配容器一般默认在堆,可使用std::pmr::monotic_buffer_resourcemap遍历使用auto&代替std::pair,后者可能会产生隐式拷贝map添加/修改使用operator[]再key不存在时会调用两次构造函数,解决:先判断是否存在,再做插入map构造std::piecewise_construct,只构造一次,没有多的移动和拷贝构造函数迭代器使用++iter容器查找优先用成员函数find,而不是std::find容器拷贝赋值标准库都是值语义,改为使用移动语义容器添加emplace_back代替push_backIO相关文件写入不高频率调用write,不一次写入、删除大文件,少使用du遍历输入输出libfmt代替原生printf类与对象移动构造函数要定义为noexcept性能优化类的成员用初始化列表构造能减少构造函数调用变量定义使用前再定义,防止过早自动调用构造函数智能指针可使用unique_ptr代替裸指针,勿滥用shared_ptr,会影响影响,引用计数器是原子操作用make_shared代替new创建shared_ptr默认函数手动删除不需要的构造函数、析构函数、隐式构造转换,运算符重载编译优化内联函数3行左右,写在头文件,lambda自动内联复制省略RVO,NRVO,不要用return std::move(xx)短字符串优化SSO字符串直接保存在栈上编译等级编译等级需要设置为O2以上其他auto无引用auto不会自动推导引用&字符串字符串不用+用+=,比如s1+=s2,而不是s1 = s1+s2循环体外创建string,内部用clear代替直接创建stringconst char*转string,比如"SevenX"是一个const char* ,如果函数形参是string就会调用隐式转换
点赞 28
评论 7
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务