性能优化篇

1、使用 Class 代替 ProtoBuf 协议

因为 ProtoBuf 采用的是 Arena 内存分配器策略,有些场景会比 C++的 Class 内存管理复杂,当有大量内存分配和释放的时候会比 Class 的性能差很多。而且 Protobuf 会不断分配和回收小内存对象,持续地分配和删除小内存对象导致产生内存碎片,降低程序的内存使用率,尤其是当协议中包含 string 类型的时候,性能差距可能有几倍。对于包含了很多小对象的 Protobuf message,析构过程会导致堆上分配了许多对象,从而会变得复杂,导致析构函数执行速度变慢。

https://www.cnblogs.com/papering/p/18058309

2、使用 jemalloc/tcmalloc 代替普通的 malloc 方式

使用 C++的 STL(malloc),所以会出现以下几种缺点:

内存碎片:频繁分配和释放不同大小的对象,可能导致内存碎片,降低内存的使用效率。Cache 不友好:而且 STL 的普通内存分配器分散了对象的内存地址,降低了数据的缓存命中率。并发差:STL 的默认内存分配器可能使用全局锁,相当于给加了一把大锁,在多线程环境下性能表现很差。

https://www.cnblogs.com/papering/p/18058309

相关推荐
Tianwen_Burning2 分钟前
c++ release下的debug
c++
谦宸、墨白16 分钟前
从零开始学C++:二叉树进阶
开发语言·数据结构·c++
Howrun7771 小时前
C++ 文件操作全知识点详细讲解
c++
m0_748248653 小时前
C++使用HTTP库和框架轻松发送HTTP请求
开发语言·c++·http
朔北之忘 Clancy3 小时前
2025 年 12 月青少年软编等考 C 语言二级真题解析
c语言·开发语言·c++·学习·算法·青少年编程·题解
2301_790300963 小时前
C++与增强现实开发
开发语言·c++·算法
zmzb01033 小时前
C++课后习题训练记录Day82
开发语言·c++
Howrun7773 小时前
C++ 文件操作速查手册
c++
C++ 老炮儿的技术栈4 小时前
不调用C++/C的字符串库函数,编写函数strcmp
c语言·开发语言·c++·人工智能·windows·git·visual studio
茉莉玫瑰花茶4 小时前
脚手架介绍
c++